Reputation:
Is there a way in C++ where an objects has argument added upon it, with an array such as:
int x = 1;
int y = 2;
Object myObject( x, y )[5]; // does not work
I was hoping that I could put arguments into the object, while creating an array of 5 of these objects, does anyone know how? and is there a bteter way?
Upvotes: 4
Views: 8692
Reputation: 415881
You haven't mentioned which language yet, but in C# 3.0 you can get close with collection initializers:
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)
};
Upvotes: 0
Reputation: 14148
If you don't mind using a vector instead of an array:
std::vector<Object> obj_vec(5, Object(x, y));
Or if you really want an array and don't mind initializing it in 2 steps:
Object obj_array[5];
std::fill_n(obj_array, 5, Object(x, y));
Upvotes: 1
Reputation: 31
Or something like this:
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);
}
Maybe it's a function with x,y and numObjects as params?
Upvotes: 0
Reputation: 23218
When constructing an array of objects in C++ only the default constructor can be used unless you're using the explicit Array initialization syntax:
Object myObject[5] = { Object( x, y ),
Object( x, y ),
Object( x, y ),
Object( x, y ),
Object( x, y ) }
Here's some good information from the C++ FAQ about this:
http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.5
Upvotes: 7