有没有办法创建一个类,该类具有在C ++中具有此类对象的类的对象?

时间:2011-09-26 16:15:34

标签: c++ class attributes

在C ++中,是否有某种方法可以创建一个类,该类具有作为属性的类的对象,该类具有作为属性的第一个类的对象?

e.g:

class A {
    B attribute;
public:
    A(){}
};

class B {
    A attribute;
public:
    B(){}
};

上面的代码无法编译。有没有办法做同样的事情?

谢谢!

3 个答案:

答案 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)

您需要重新考虑您的结构。您正在尝试定义包含另一个结构的结构,该结构包含第一个包含第二个结构的结构,等等......