07/03/10 10:26:51
すいません、初歩的な質問なんですが、どなたかご意見いただければうれしく思います。
クラスBの中でクラスAのオブジェクトの配列を管理したい。
でもクラスAは、A2やA3などにも派生させてて、それも配列に入れたい、って場合。
class A {
...
};
class A2 : public A{
...
}
class A3 : public A{
...
}
class B {
vector<A> a1_vector;
}
ってしたいんだが、これだとa1_vectorにはA2,A3が入らないですよね?
ってなると・・
class B {
vector<A*> a1_vector;
}
で、new A, new A2とかでオブジェクト作って、そのポインタをa1_vectorにpushすることになると思うんですが、これだとクラスBのインスタンスが破棄されたときに、a1_vectorで管理されている各オブジェクトって廃棄されないですよね?
で、google先生とかに聞くと、share_ptr使う人がいるみたいなんですが、それで問題ないですかね?
なんか注意点とかありますか?もしくは他にいい方法ありますでしょうか?