有没有办法在c++中创建一个类,它有一个类的对象,而这个类的对象又有一个类的对象

Is there some way to create a class that have an object of a class that have an object of this class in C++?

本文关键字:对象 有一个 一个 c++ 创建 有没有      更新时间:2023-10-16

在c++中,是否有办法创建一个类,作为属性,一个类的对象,作为属性,第一个类的对象?

例如:

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

上面的代码无法编译。有没有类似的办法?

谢谢!

首先,您需要转发声明类B,否则编译器将不知道B是什么。此外,将属性更改为指针,否则您仍然会有编译器错误,即使您转发声明的B,它仍然不知道实现!

下面的代码可能有帮助,祝你好运…

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

这些定义本质上是递归的,即使您可以使用前向声明来使它们工作(但您不能)。A包含B, B包含A, A又包含B,以此类推。

您需要重新考虑您的结构。你试图定义一个包含另一个结构的结构,这个结构包含第一个结构它包含第二个结构,等等

相关文章: