对象A是B的成员,对象B是A的成员

Ayo*_* M. 2 c++ oop

我有一个c ++,在A和B类中,每个人都有另一个类的成员.我怎么解决这个问题?

class A {
     B memberY;
}


class B {
     A memberX;
}
Run Code Online (Sandbox Code Playgroud)

Luc*_*ore 6

您使用指针和转发声明.

//A.h

class B; //forward declaration to class B

class A {
     B* memeberY;
}

header for class B:

//B.h

class A; //forward declaration to class B

class B {
     A* memeberX;
}
Run Code Online (Sandbox Code Playgroud)

您不能使用对象实例,只能使用指针,因为实例需要编译器知道类的完整定义.

请注意,如果将内存管理分配给类,则应释放析构函数中的内存.这意味着您还应该覆盖类中的copy constructoroperator =.

您可以让其中一个类包含另一个类的对象,但您必须在标题中包含其他类的标题.另一个必须通过前瞻性声明来解决.