我不理解模板的所有继承。

template <typename T>
class Mere
{
protected:
    Mere();
};

class Fille2 : public Mere<int>
{
protected:
    Fille2(){
        Mere();
    }
};


int main(int argc, char** argv) {

    return 0;
}

为什么会有这个错误?
main.cpp:22:5: error: 'Mere<T>::Mere() [with T = int]' is protected
Mere();

当我将“Mere()”公开发布时,所有作品都可以?我的类(class)“仅”不能拥有“ protected ”功能吗?为什么?

最佳答案

是的,即使它是protected,也可以调用基类的构造函数。这是正确的语法:

class Fille2 : public Mere<int>
{
protected:
    Fille2(): Mere() {
    }
};

有关详细讨论,请参见Why is protected constructor raising an error this this code?

07-28 08:43