[英]How to solve field 'classname' has incomplete type error
我在执行以下操作时遇到此错误:
A级 B级
A类{
B b_obj; //这里出现错误
...
}
B级{
...
一个对象
...
}
我观察到的一件事是,如果我向上移动B类,则它会被删除,但是由于我使用双向链接,因此B中也具有A类的对象,因此我无法摆脱这两个错误。
循环依赖
struct A { B b; };
struct B { A a; };
永远不会编译。 A要么不知道B的大小,反之亦然(一个在另一个之前声明)。
现在您可能很想写(带有前向声明)
struct A { std::shared_ptr<B> b; };
struct B { std::shared_ptr<A> a; };
它将编译并(可能/将)引入内存泄漏(a表示b,反之亦然)。
因此,问题是:A拥有自己的B或B拥有自己的A-甚至另一个类C拥有两者。
(具有定义的所有权,您可能只使用new / delete而不是shared_ptr)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.