コンテナ Vector のようなベクターを作成しようとしています。
次に、次のように宣言しました。
Vector< A> Avector.
メモリの割り当て中に、 A にデフォルトのコンストラクターがないというコンパイル エラーが発生します。メモリを割り当てるために次のコードを書きました。
char *pBuffer = (char*) malloc(size*sizeof(T));
T *array;
for(int i = 0; i < size; i++)
{
(array+i) = new(pBuffer + i) T;
}
return array;
T はテンプレート変数です。
エラーは、A のデフォルト コンストラクターを作成していないのに、新しい配置で T のデフォルト コンストラクターを使用しているという事実によるものです。
知りたいのですが、メモリ割り当てがコンストラクターの署名に依存しないようにする方法はありますか。