C++ 成员初始值设定项';超类&x27;不命名非静态数据成员或基类

C++ 成员初始值设定项';超类&x27;不命名非静态数据成员或基类,c++,constructor,C++,Constructor,我的一些构造器有问题。两个子类都需要获得相同的类(没有超类),这就是为什么这些类应该在超类中初始化: template<typename T, typename S> class SuperClass { protected: OtherClass <T> const& _class1; OtherOtherClass <T> const& _class2; 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;
    }
模板
类超类{
受保护的:
其他类常量和类1;
其他类常量和类2;
超类(){
}
超类(其他类常量和类1,其他类常量和类2)
:_class1(class1),_class2(class2)
{
//我尝试的替代方案:
//这个->_class1=class1;
//这个->_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
            }

     }
模板
类子类1:公共超类{
私人:
someFunc(){
返回此->_class1.getSomething();//作为示例
}
公众:
第1子类(其他类常量和第1类),
其他类别常量和类别2)
:超类(1类,2类)
{
//一些定义
}
}
之后,将显示此错误:

成员初始值设定项 “超类”未命名非静态数据成员或基 阶级

我发现一些人有类似的问题,但这并没有引导我找到解决方案。例如: 我没有看到太多的差异,尝试像他那样添加一个空构造函数。

错误说明了一切:

成员初始值设定项“
超类”
”未命名非静态数据成员或基类

超类
不是类。它是类模板。因此,它不是您类型的基类。基类是类模板的特定实例化:
超类
。这就是您需要的:

    SubClass1(OtherClass<T> const& class1,
            OtherOtherClass<T> const& class2)
    : SuperClass<T,S>(class1, class2)
    //          ^^^^^
子类1(其他类常量和类1,
其他类别常量和类别2)
:超类(1类,2类)
//          ^^^^^
错误说明了一切:

成员初始值设定项“
超类”
”未命名非静态数据成员或基类

超类
不是类。它是类模板。因此,它不是您类型的基类。基类是类模板的特定实例化:
超类
。这就是您需要的:

    SubClass1(OtherClass<T> const& class1,
            OtherOtherClass<T> const& class2)
    : SuperClass<T,S>(class1, class2)
    //          ^^^^^
子类1(其他类常量和类1,
其他类别常量和类别2)
:超类(1类,2类)
//          ^^^^^

请提供一个示例。您是否可以显示类
子类1
的定义?是否应该读取超类(…)?请提供一个示例。您是否可以显示类
子类1
的定义?是否应该读取超类(…)?