別のオブジェクトへのポインタメンバーを保持するクラスがあるとしましょう。デストラクタでそのポインタを削除すると、エラーが発生します(理由はわかります)。
私の質問は:メモリリークなしでそれを克服することは可能ですか?
これが私がしていることのデモです。
class A {
public:
~A() { cout<< "~A()" <<endl; }
};
class B {
A *pA;
public:
B(A* pA) {
this->pA = pA;
}
~B() {
delete pA;
cout<<"~B()"<<endl;
}
};
int main() {
A a;
{
B b2(new A()); //deletes A, deletes B, no memory leaks
}
{
B b(&a); //deletes A, error.
}
return 0;
}