我有一个场景,我正在实现多级继承,但第一级继承被指定为受保护的继承,但它给我编译问题。
class A
{
protected:
int a1;
};
class B: protected A
{
protected:
int b1;
};
class C: public B
{
public:
C()
{
a1=10;
b1=20;
cout<<a1<<b1<<endl;
}
};
int main()
{
C c; //can access A class protected data
A* a= new C; //compilation error: cannot cast 'C'to its protected base class 'A'
}
我的问题是,当我做继承使用保护访问指定,我能够访问所有的A类数据成员,那么为什么我不能有一个类类型持有C对象的指针?
main由于其受保护状态而不受继承关系的影响。
class B: protected A
使得它在B::
和C::
之外不可访问