我有兩個私人嵌套類需要訪問另一個類中的私人成員。我想將需要訪問私有成員的類放在被訪問的類中作爲朋友,但是我收到A :: m_nData是私有的錯誤,因此我無法訪問它。無論如何告訴編譯器,我需要訪問D :: DoSomething()中的A :: m_nData私有成員?私人嵌套類中的朋友
這裏是我想要做的一個樣本:
文件啊
class A
{
class D;
public:
A();
~A() {}
private:
friend class D;
int m_nData;
};
文件A.cpp:
#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 2012-01-06 15:33:23
@ildjarn:在實際使用情況下,A定義了4個可以設置的代表。 B充當A的管理者。我必須刪除大量代碼,但C和D是使用A指針調用A的回調的包裝器。在我放在那裏的例子中,我將它們改爲了一個int值。 – thewalrusnp 2012-01-06 15:40:54
這並沒有回答他們爲什麼必須是_nested_ classes ...爲什麼他們嵌套在'B'裏面? – ildjarn 2012-01-06 15:41:44