我有一个c ++,在A和B类中,每个人都有另一个类的成员.我怎么解决这个问题?
class A {
B memberY;
}
class B {
A memberX;
}
Run Code Online (Sandbox Code Playgroud)
您使用指针和转发声明.
//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 constructor和operator =.
您可以让其中一个类包含另一个类的对象,但您必须在标题中包含其他类的标题.另一个必须通过前瞻性声明来解决.