在C ++中,是否有某种方法可以创建一个类,该类具有作为属性的类的对象,该类具有作为属性的第一个类的对象?
e.g:
class A {
B attribute;
public:
A(){}
};
class B {
A attribute;
public:
B(){}
};
上面的代码无法编译。有没有办法做同样的事情?
谢谢!
答案 0 :(得分:6)
首先,您需要转发声明您的类B.如果不是,编译器将不知道B是什么。另外,将属性更改为指针,否则您仍会遇到编译器错误,即使您转发声明的B,它仍然不知道实现!
以下代码可能有所帮助,祝你好运......
class B;
class A {
B *attribute;
public:
A(){}
};
class B {
A *attribute;
public:
B(){}
};
答案 1 :(得分:2)
这些定义,即使你可以使用前向声明来使它们工作(你不能),它们本质上是递归的。 A包含B,其中包含A,其中包含B,以及on和on。这是荒谬的。
答案 2 :(得分:0)
您需要重新考虑您的结构。您正在尝试定义包含另一个结构的结构,该结构包含第一个包含第二个结构的结构,等等......