C++始めたばかり何でちょっと分からないことがあります。 class C { public: int hoge; }; class B { C *c; public: B() : c(NULL) {} virtual ~B() { if (c != NULL) { delete c; c = NULL; } } void init() { c = new C; c->hoge = 4545; } int Get() { return c->hoge; } }; class A { B b; public: B Get() { return b; } void init() { b.init(); } void print() { printf("%d\n", b.Get()); } }; int main() { A *a = new A; a->init(); B b = a->Get(); printf("%d\n", b.Get()); a->print(); delete a; return 0; } このソースなんですが、Bクラスのデストラクタが2回呼ばれてエラーを吐きます。 私的には、delete a;した時に1回だけ呼ばれてほしいのですが、どうすればいいのでしょうか? 分かる方お願いします。