1
我的一些構造函數有問題。這兩個子類都需要得到相同的類(沒有超類),這就是爲什麼這些類應在父類被初始化:成員初始化程序'SuperClass'沒有命名非靜態數據成員或基類
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
}
}
之後此錯誤顯示出來:
成員初始化 '父類的不名非靜態數據成員或基 類
我發現一些有類似問題的人,但並沒有讓我找到解決辦法。例如:member initializer does not name a non-static data member or base class 我沒有看到很多差異,並試圖添加一個像他一樣的空構造函數。
請提供一個[mcve] – Barry
你可以顯示類'SubClass1'的定義嗎? –
是否應該閱讀SuperClass(...)? –