前瞻性朋友宣言

时间:2010-06-24 23:13:23

标签: c++

嗨我有问题,我尝试做跟随,A级依赖B级,反之亦然

class A;

 class B{
   A foo;
   friend B A::doSomething();

 };

class A {
   B bar;
   B doSomething;
};

朋友声明不起作用,因为A是不完整的声明。有什么方法可以避免这种情况吗? (Swapp类声明顺序不是一个解决方案,我不想构建一个更复杂的例子,交换不再起作用)

2 个答案:

答案 0 :(得分:6)

你现在要做的是让你的课程无限大 (据我所知,barfoo是类成员变量,因此这意味着B包含A,其中包含B,...)。

您可以在其中一个类中使用指针并存储A* fooB* bar,或以某种方式重新设计您的应用程序,以避免此循环依赖。

答案 1 :(得分:0)

嵌套这两个类。这给出了关于何时何地可以声明和定义内容的更有利的规则。

此外,我怀疑你的设计可能只是被塞住了。您可能希望发布A和B的实际内部结构,以便我们提供更多建议。