有人可以解释为什么这段代码不起作用。
class A
{
public:
A(void){}
virtual ~A(void){}
protected:
A* parent;
};
class B : public A
{
public:
B(void){parent = new B;}
~B(void){delete parent;}
protected:
int a;
};
class C : public B
{
public:
C(void){}
virtual ~C(void){}
void f(void){ ((B*)parent)->a; }
};
怎么可能C
无法访问成员B
?
如果我转换parent
为 aC*
而不是 aB*
它工作正常。但我不希望用户承担任何不必要的风险。有更清洁的访问方式a
吗?
谢谢。