C++ 转发类好友声明

C++ 转发类好友声明,c++,C++,嗨,我有一个问题,我试着做下面的事情,a班取决于B班,反之亦然 class A; class B{ A foo; friend B A::doSomething(); }; class A { B bar; B doSomething; }; 朋友声明不起作用,因为A是不完整的声明。有没有办法避免这种情况?(交换类声明顺序不是一个解决方案,我不想构造一个更复杂的例子,在这个例子中交换不再起作用)您现在试图做的事情将使您的类无限大(据我所知,bar和foo是类成

嗨,我有一个问题,我试着做下面的事情,a班取决于B班,反之亦然

class A;

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

 };

class A {
   B bar;
   B doSomething;
};

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

您现在试图做的事情将使您的类无限大(据我所知,
bar
foo
是类成员变量,因此这意味着
B
包括
A
,其中包括
B
,…)


你可以使用指针并将
A*foo
B*bar
存储在你的一个类中,或者以某种方式重新设计你的应用程序以避免这种循环依赖性。

你现在试图做的事情会使你的类无限大(据我所知,
bar
foo
是类成员变量,因此这意味着
B
包括
A
,其中包括
B
,…)


您可以使用指针并将
A*foo
B*bar
存储在一个类中,或者以某种方式重新设计应用程序以避免这种循环依赖性。

嵌套这两个类。这就为您在何时何地可以声明和定义什么提供了更有利的规则


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

嵌套这两个类。这为您在何时何地声明和定义内容提供了更有利的规则

除此之外,我怀疑你的设计可能会失败。你可能想发布A和B的实际内部结构,以便我们提供更多建议。

有什么办法可以避免这种情况吗?首先要避免循环依赖。其余的都会自行失效。你认为需要依赖的是什么y?有什么方法可以避免这种情况吗?首先要避免循环依赖。其余的都会自行失效。你认为你需要解决的依赖是什么?