分为三类:
class A
{
friend I_B;
protected:
void* mData;
};
class I_B
{
void foo() = 0;
};
class B_Impl : public I_B
{
B_Impl( A* value )
:
mData( value->mData ) <--- ERROR
{
}
void foo() { mData->DoSomething() };
protected:
void* mData;
};
在编译时,我在构造函数中得到一个错误,即 mData 是受保护的成员。
请解释一下为什么会这样。
我可以使用基类的“友谊”访问受保护的成员吗?