次のような配列を使用して、オブジェクトに引数が追加されている C++ の方法はありますか。
int x = 1;
int y = 2;
Object myObject( x, y )[5]; // does not work
これらのオブジェクトの5つの配列を作成しながら、オブジェクトに引数を入れることができることを望んでいましたが、方法を知っている人はいますか? そして、より良い方法はありますか?
C++ でオブジェクトの配列を構築する場合、明示的な配列初期化構文を使用しない限り、既定のコンストラクターのみを使用できます。
Object myObject[5] = { Object( x, y ),
Object( x, y ),
Object( x, y ),
Object( x, y ),
Object( x, y ) }
これに関する C++ FAQ からの良い情報を次に示します。
配列の代わりにベクトルを使用してもかまわない場合:
std::vector<Object> obj_vec(5, Object(x, y));
または、本当に配列が必要で、2つのステップで初期化してもかまわない場合:
Object obj_array[5];
std::fill_n(obj_array, 5, Object(x, y));
またはこのようなもの:
int x = 1;
int y = 2;
int numObjects = 5;
Object myObjectArray[numObjects];
for (int i=0, i<numObjects, i++) {
myObjectArray[i] = new myObject(x,y);
}
たぶん、x、y、およびnumObjectsをパラメータとして持つ関数ですか?
どの言語についてはまだ言及していませんが、C# 3.0 では、コレクション初期化子に近づくことができます。
var myObject = new List<Object>() {
new Object(x,y),
new Object(x,y),
new Object(x,y),
new Object(x,y),
new Object(x,y)
};