Anoymonous
Anoymonous

Reputation:

Objects with arguments and array

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

Answers (4)

Joel Coehoorn
Joel Coehoorn

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

&#201;ric Malenfant
&#201;ric Malenfant

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

Jeff Grimshaw
Jeff Grimshaw

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

Don Neufeld
Don Neufeld

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

Related Questions