4

次のような配列を使用して、オブジェクトに引数が追加されている C++ の方法はありますか。

int x = 1;
int y = 2;

Object myObject( x, y )[5]; // does not work

これらのオブジェクトの5つの配列を作成しながら、オブジェクトに引数を入れることができることを望んでいましたが、方法を知っている人はいますか? そして、より良い方法はありますか?

4

4 に答える 4

7

C++ でオブジェクトの配列を構築する場合、明示的な配列初期化構文を使用しない限り、既定のコンストラクターのみを使用できます。

Object myObject[5] = { Object( x, y ),
                       Object( x, y ),
                       Object( x, y ), 
                       Object( x, y ), 
                       Object( x, y ) }

これに関する C++ FAQ からの良い情報を次に示します。

http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.5

于 2009-04-22T23:26:43.127 に答える
1

配列の代わりにベクトルを使用してもかまわない場合:

std::vector<Object> obj_vec(5, Object(x, y));

または、本当に配列が必要で、2つのステップで初期化してもかまわない場合:

Object obj_array[5];
std::fill_n(obj_array, 5, Object(x, y));
于 2009-04-23T03:07:20.023 に答える
0

またはこのようなもの:

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をパラメータとして持つ関数ですか?

于 2009-04-22T23:46:46.497 に答える
0

どの言語についてはまだ言及していませんが、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)
};
于 2009-04-22T23:31:41.803 に答える