ファイルああ:
class B;
class A
{
public:
B *b;
A(B *b = nullptr)
{
this->b = b;
}
~A()
{
delete this->b;
}
};
ファイルbh内:
class A;
class B
{
public:
A *a;
B(A *a = nullptr)
{
this->a = a;
}
~B()
{
delete this->a;
};
};
A *オブジェクトへのポインタがあり、それを削除したい場合を考えてみましょう。
// ...
A *a = new A();
B *b = new B();
A->b = b;
B->a = a;
// ...
delete a;
// ...
AのデコンストラクタはBを削除すると言います。つまり、Bのデコンストラクタを呼び出します。Bのデコンストラクターは、A。deathloopléinfinitèを削除すると言います。
この問題を解決するためのコードを書くためのより良い方法はありますか?これは差し迫った質問ではなく、ただ好奇心が強いです。
ありがとう!