我试图从基类(模板)继承,派生类也是模板,它们具有相同的类型 T。我收到编译错误:非法成员初始化:'Base' 不是基类或成员...
为什么?如何调用基类构造函数?
#include <iostream>
template<class T>
class Base {
public:
Base(T a) {
std::cout << "A: " << a << std::endl;
}
};
template<class T>
class Derived : public Base<T> {
public:
Derived(T a) :
Base(a) // this is the problem
{}
};
int main() {
int a = 1;
Derived<int> derived(a);
}
Since Base
是一个模板,需要在成员初始值设定项列表中指定模板参数:
Derived(T a) : Base<T>(a) {}
// ^^^
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)