我知道这段代码行不通,我也知道为什么,但有其他选择吗?
class A
{
public:
A(void){}
virtual ~A(void){}
protected:
A* parent;
int a;
};
class B : public virtual A
{
public:
B(void){}
virtual ~B(void){}
protected:
void f(){ ((B*)parent)->a; }
};
不能强制parent
转换为B*
, 因为A
它是一个虚拟基类。不强制转换parent
也会出错。我希望我不必将所有成员都公开。有人知道如何访问 A::a 吗?
编辑
使用朋友不起作用,因为派生自的类B
无权访问A::a
.