C++ 转发类好友声明
嗨,我有一个问题,我试着做下面的事情,a班取决于B班,反之亦然C++ 转发类好友声明,c++,C++,嗨,我有一个问题,我试着做下面的事情,a班取决于B班,反之亦然 class A; class B{ A foo; friend B A::doSomething(); }; class A { B bar; B doSomething; }; 朋友声明不起作用,因为A是不完整的声明。有没有办法避免这种情况?(交换类声明顺序不是一个解决方案,我不想构造一个更复杂的例子,在这个例子中交换不再起作用)您现在试图做的事情将使您的类无限大(据我所知,bar和foo是类成
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?有什么方法可以避免这种情况吗?首先要避免循环依赖。其余的都会自行失效。你认为你需要解决的依赖是什么?