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));

或者,如果您真的想要一个数组并且不介意分两步初始化它:

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 回答