なぜ生ポインタと生の動的配列を最初に使用していますか?
あなたの最初の行に動的配列を作成するためのC++の方法は、次のようになります。
std::vector<ClassA*> object1(10);
これはその中の10のヌルポインタのベクトルを作成します。
次の2行は同じですが、ClassA
オブジェクトのオブジェクトのライフタイムとメモリを手動で管理するという問題があります。のは、スマートポインタを使用して、その問題を修正しましょう:
std::vector<std::unique_ptr<ClassA>> object1(10);
object1[0] = std::make_unique<ClassA>();
object1[1] = std::make_unique<ClassA>();
状況によっては、おそらく正確に10個の要素と最後の8であることはnullポインタを持つベクトルを必要としません。
std::vector<std::unique_ptr<ClassA>> object1; //empty vector
object1.push_back(std::make_unique<ClassA>()); //now has 1 element
object1.push_back(std::make_unique<ClassA>()); //now has 2 elements
そして最後改善など、あなたがない限り:あなたは、ベクターが実際に設定され、その後、ベクトルに初期サイズを割り当てないと、ちょうどあなたがacutally持つオブジェクトに押し込むだけの要素を含むようにしたい場合新しい[] `例1で`使用しないのはなぜ
std::vector<ClassA> object1; //empty vector
object1.push_back(ClassA{}); //now has 1 element
object1.push_back(ClassA{}); //now has 2 elements
:(あなたが多型の要素を持っているので、例えば)本当に、ベクター内のポインタがあることが必要、単にオブジェクトのではなく、ポインタのベクトルを使用できますか? –