私のコンストラクタのいくつかに問題があります。私はそれを通じ使用しようとしましたメンバの初期化 '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(...)を読みますか? –