2009-04-22 2 views
3

Есть ли способ в C++ где, по объектам имеют аргумент добавил на него, с массивом, например:объектов с аргументами и массивом

int x = 1; 
int y = 2; 

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

Я надеялся, что я мог бы поставить аргументы в объект, создавая массив из 5 из этих объектов, кто-нибудь знает как? и есть ли способ bteter?

+1

- 1: Язык не указан. Может быть Java. Однако неясно. –

+0

Retagged to match редактировать – GManNickG

ответ

6

При построении массива объектов в C++ конструктор по умолчанию могут быть использованы только если вы не используете явный синтаксис инициализации массива:

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

Вот некоторые хорошая информация из FAQ C++ об этом:

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

+0

Предполагая, что это C++ :-) – lothar

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) 
}; 
+0

Вы должны были упомянуть, что вы отправили это до того, как был указан язык. –

+0

Еще не поздно - посмотрите еще раз;) –

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

Может быть, это функция х, у и numObjects в Params?

1

Если вы не возражаете, используя вектор вместо массива:

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

Или, если вы действительно хотите, массив и не против его инициализации в 2 этапа:

Object obj_array[5]; 
std::fill_n(obj_array, 5, Object(x, y)); 
+0

Я не получаю эту часть. У вас должен быть конструктор по умолчанию без аргументов, чтобы первая строка была истинной. Затем вы заполняете эту ячейку памяти динамически создаваемыми объектами. Тогда почему бы нам не использовать указатели вместо реальных объектов. Они в основном бесполезны здесь. –

+0

@Halil Kaskavalci: ' –

+0

@Halil Kaskavalci: Я не понимаю ваш комментарий. Вы ссылаетесь на предложение использовать вектор ctor или тот, который использует fill? –

Смежные вопросы