使用模板继承 类

Inheritance with template classes

我想知道如何从模板 class 继承到模板 class。问题是:我不能使用 Parent class.

的受保护成员

示例:

template <class N>
class Parent {
protected:
    N member;
public:
    Parent(N aa){
        member = aa;
    }
};


class Child1: public Parent<int>{
    public:
        Child1(int a): Parent<int>(a) {
            member += 1; // works
        }
};

template<class Q>
class Child2: public Parent<Q>{
    public:
        Child2(int a): Parent<Q>(a) {
            member += 1; // does not work (use of undeclared identifier)
        }
};

如何在 Child2 class 中使用“成员”?

感谢您的宝贵时间

您需要使用 this->memberParent<Q>::member

在第二种情况下,member 是一个“dependent name”,因为基础 class 模板 Parent<Q>member 的存在取决于模板中 class Q 的类型,而在第一个示例中没有依赖类型,编译器可以静态分析 Parent<int> 包含 member.