私は別のクラスのプライベートメンバーにアクセスする必要のある2つのプライベートネストされたクラスを持っています。私はプライベートメンバーにアクセスする必要があるクラスをアクセスクラスの友人として配置することを考えましたが、A :: m_nDataはプライベートでアクセスできないというエラーが発生しています。とにかくD :: DoSomething()内のA :: m_nDataプライベートメンバーにアクセスする必要があることをコンパイラーに伝える? A.cpp ああプライベートネストされたクラス内のフレンド
class A
{
class D;
public:
A();
~A() {}
private:
friend class D;
int m_nData;
};
ファイル
ファイル:
#include "A.h"
#include "B.h"
A::A()
: m_nData(0)
{
}
ファイルBhをここで
は、私が何をしようとしているのサンプルです:#include "A.h"
class B
{
public:
B() {}
~B() {}
private:
class C
{
public:
C(A* pA): m_pA(pA) {}
virtual ~C() {}
virtual void DoSomething() {}
protected:
A* m_pA;
};
class D: public C
{
public:
D(A* pA): C(pA) {}
virtual ~D() {}
virtual void DoSomething()
{
m_pA->m_nData++;
};
};
};
'C'と 'D'がB' '内にネストされなければならないのはなぜ?あなたはそれをどのように知っていますか? – ildjarn
@ildjarn:実際のユースケースでは、Aは設定可能な4つのデリゲートを定義しています。 BはAのマネージャーのように振舞っています。私はたくさんのコードを削除しなければなりませんでしたが、CとDはAポインターを使ってAのコールバックを呼び出すラッパーです。私がそこに置いた例では、それらをint値に変更しました。 – thewalrusnp
なぜ彼らは_nested_クラスでなければならないのか答えません...なぜ彼らは 'B'の中にネストされていますか? – ildjarn