在受保护时使用基类构造函数

时间:2017-09-19 17:10:08

标签: c++ c++11 using-directives

我想在子类中使用基类构造函数,基类构造函数受到保护,因此在没有子类的情况下无法实例化它。

class A {
protected:
    A() {}
};

class B : public A {
public:
    B() : A() {}
};

但是如果没有编译器抱怨B::B()受到保护,即使使用在公共块中,我也不能使用这样的using指令。

class B {
public:
    using A::A;
};

指定了此行为的位置?

修改

我试图简化示例,并没有检查看它编译,显然有一个简单的构造函数它工作,但这段代码不编译

class A {
protected:
    A(int x) {}
};

class B : public A{
public:
    using A::A;
};

int main() {
  B b(4);
}

有错误

main.cpp: In function 'int main()':
main.cpp:12:8: error: 'A::A(int)' is protected within this context
   B b(4);
        ^
main.cpp:3:5: note: declared protected here
     A(int x) {}
     ^

exit status 1

0 个答案:

没有答案