ここに私の構造はC++では、構造体へのポインタのメモリを解放するためのデストラクタを書く方法は?
struct A {
int a1;
int a2;
~A() { }
};
B
だが、私は、コード
int bb1;
vector <A*> aa1;
// do some stuff
B *ptrB = new B(bb1, aa1);
の下に使用上の後、私は自由にすべての/削除する必要が
struct B {
B(int b, A* a)
: b1(b), ptr2A(a)
{}
int b1;
A* ptr2A;
~B() {
delete b1;
// traverse each element pointed to by A, delete them <----
}
};
へのポインタが含まれている別の構造体でありますptrBが指すメモリ。したがって、構造体Bの中に正しいデストラクタを書く必要があります。Aで指し示されている各要素をトラバースして削除するにはどうすればよいですか?
C++の本が必要です。あなたは、 'C'からのものと、自動変数を' delete'しようとしています。さらに、 'A'でトラバースするものは何もありません - あなたは' ptr2Aを削除するだけです。 – Yuushi
なぜb1を削除するのですか? – StarPinkER
[クラスにポインタがあるときにデストラクタを書き込む方法は?](http://stackoverflow.com/questions/5317735/how-to-write-destructor-when-i-have-pointers-in-class) – jogojapan