我有两个私人嵌套类需要访问另一个类中的私人成员。我想将需要访问私有成员的类放在被访问的类中作为朋友,但是我收到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