在文件啊:
class B;
class A
{
public:
B *b;
A(B *b = nullptr)
{
this->b = b;
}
~A()
{
delete this->b;
}
};
Run Code Online (Sandbox Code Playgroud)
在文件 bh 中:
class A;
class B
{
public:
A *a;
B(A *a = nullptr)
{
this->a = a;
}
~B()
{
delete this->a;
};
};
Run Code Online (Sandbox Code Playgroud)
让我们假设我们有一个指向 A *对象的指针,并且我们想要删除它:
// ...
A *a = new A();
B *b = new B();
A->b = b;
B->a = a;
// ...
delete a;
// ...
Run Code Online (Sandbox Code Playgroud)
A 的析构函数会说删除 B;即调用 B 的析构函数。B 的析构函数会说 delete A.death loop lé infinitè。
有没有更好的方法来编写代码来解决这个问题?这不是紧迫的问题,只是好奇。
谢谢!