【发布时间】:2016-12-19 15:31:45
【问题描述】:
我的一些构造函数有问题。两个子类都需要获取相同的类(没有超类),这就是为什么这些类应该在超类中初始化:
template<typename T, typename S>
class SuperClass {
protected:
OtherClass <T> const& _class1;
OtherOtherClass <T> const& _class2;
SuperClass() {
}
SuperClass(OtherClass<T> const& class1, OtherOtherClass<T> const& class2)
: _class1(class1), _class2(class2)
{
// Alternative I tried:
// this->_class1 = class1;
// this->_class2 = class2;
}
我尝试通过以下方式使用它:
template<typename T, typename S>
class SubClass1 : public SuperClass<T, S> {
private:
someFunc() {
return this->_class1.getSomething(); // as an example
}
public:
SubClass1(OtherClass<T> const& class1,
OtherOtherClass<T> const& class2)
: SuperClass(class1, class2)
{
// some definitions
}
}
之后出现此错误:
成员初始化器 'SuperClass' 没有命名非静态数据成员或基础 类
我发现一些人有类似的问题,但它并没有引导我找到解决方案。例如:member initializer does not name a non-static data member or base class 我没有看到很多不同之处,并尝试像他一样添加一个空的构造函数。
【问题讨论】:
-
你能给出类
SubClass1的定义吗? -
应该读成 SuperClass
(...)?
标签: c++ constructor