次の 3 つのクラスがあります。
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 が保護されたメンバーであるというコンストラクターでエラーが発生します。
なぜそれが起こるのか説明してください。
基本クラスの「フレンドシップ」を使用して、保護されたメンバーにアクセスできますか?