スタック割り当てオブジェクトを使用してオブジェクトを異種ベクトルに格納する
こんにちは、
CA1、CA2、およびおそらくその他に派生した抽象クラス CA があるとします。
これらの派生型のオブジェクトを、クラス CB に埋め込んだベクトルに入れたいと考えています。ポリモーフィズムを正しく行うには、ポインターのベクトルを格納する必要があります。
class CB
{
std::vector <CA*> v;
};
ここで、次の主な機能があるとします。
int main()
{
CB b;
CA1 a1;
CA2 a2;
b.Store( a1 );
b.Store( a2 );
}
元のオブジェクトが破棄されたときに格納されたオブジェクトが存続するように、メソッドを簡単な方法で記述するにはどうすればよいですかvoid CB::Store(const CA&)
(上記の単純な例では発生しません)。
私の問題は、オブジェクトのアドレスをベクターにコピーする前に、まずオブジェクトをヒープにコピーする必要があることですが、派生型のオブジェクトを作成するにはどうすればよいですか? 確かに、RTTI を使用して、考えられるすべての型を検索し、ポインターを作成して割り当て、割り当てられた空間に (適切なキャストを使用して) オブジェクトをコピーしてから、ベクターにプッシュすることができます。しかし、これは非常に複雑に思えますね。
もっと簡単な方法はありますか?
(そして、メインで動的割り当てを使用せずに!)