使用模板继承 类
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->member
或 Parent<Q>::member
。
在第二种情况下,member
是一个“dependent name”,因为基础 class 模板 Parent<Q>
中 member
的存在取决于模板中 class Q
的类型,而在第一个示例中没有依赖类型,编译器可以静态分析 Parent<int>
包含 member
.
我想知道如何从模板 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->member
或 Parent<Q>::member
。
在第二种情况下,member
是一个“dependent name”,因为基础 class 模板 Parent<Q>
中 member
的存在取决于模板中 class Q
的类型,而在第一个示例中没有依赖类型,编译器可以静态分析 Parent<int>
包含 member
.