views:

215

answers:

4

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?

+4  A: 

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

Don Neufeld
assuming it's C++ :-)
lothar
+1  A: 

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)
};
Joel Coehoorn
You should have mentioned that you submitted this before a language was specified.
Rob K
It's not too late -- look again ;)
Joel Coehoorn
A: 

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?

Jeff Grimshaw
A: 

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));
Éric Malenfant