タイトルが示すように、デフォルトのコンストラクターを呼び出したくないというこの条件で、新しいオブジェクトの動的サイズの配列を作成する方法はありますか?
何かのようなもの :
myclass* myarray = new myclass(firstArgument, secondArgument)[32];
タイトルが示すように、デフォルトのコンストラクターを呼び出したくないというこの条件で、新しいオブジェクトの動的サイズの配列を作成する方法はありますか?
何かのようなもの :
myclass* myarray = new myclass(firstArgument, secondArgument)[32];
最も簡単な方法は、ベクター要素をコピー構築できるコンストラクターを持つものnew
を使用するのではなく、使用することです。std::vector
ほとんどの場合、これが推奨される方法です。ベクトルの代わりに動的に割り当てられた配列が必要になることは、かなりまれなケースです。
(何らかの理由で) new を使用する必要がある場合、これを行う 1 つの方法は、生のメモリを割り当て、それをオブジェクト型にキャストしてから、使用std::uninitialized_fill()
して値をその場でコピーすることです。
動的配列が必要な場合は、ベクトルを使用できます。これにより、メモリ管理も手放せます。
これを(新しい方法で)行う方法(または少なくとも簡単な方法)はないようです。
多くの検索の後、私はこの解決策を思いつきました:
USE VECTOR CLASS
実際、新しいことは忘れて、典型的なプロジェクトでは vector を使用してください。それには多くの利点があります。