1

次の 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 が保護されたメンバーであるというコンストラクターでエラーが発生します。

なぜそれが起こるのか説明してください。

基本クラスの「フレンドシップ」を使用して、保護されたメンバーにアクセスできますか?

4

1 に答える 1