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