2014-12-11 2 views
3

Было бы здорово, если бы вы могли бы мне помочь здесь: Я создаю объекты как массивC++: объекты, созданные через массив, но как передать параметры?

Class object[3]; 

, но я не знаю, как передать параметры, создавая объекты таким образом. Если будет создан только один объект, код будет выглядеть так:

Class object("Text", val); 

Остальное управляется конструктором. Заранее благодарю за ваши идеи!

+0

Вы используете самые последние стандарты C++ x11? –

+0

@George_Houpis да, но если есть разные версии для решения проблемы, отправьте оба из них –

+0

[related] (https://stackoverflow.com/questions/4754763/c-object-array-initialization-without-default- конструктор) –

ответ

2

В C++ 98:

Class object[3] = {Class("Text1", val1), Class("Text2", val2), Class("Text3", val3)}; 

Но это требует Class быть копирования конструктивны.

В C++ 11 это немного проще и, что более важно, не требует Class быть копирования конструктивны:

Class object[3] = {{"Text1", val1}, {"Text2", val2}, {"Text3", val3}}; 

Если у вас есть более чем на несколько объектов, то лучше использовать std::vector и push_back()/emplace_back().

+0

Спасибо за быстрый повтор, но есть ли более удобный способ (в случае создания 20+ объектов)? –

+1

@DonMan другой вариант - использовать 'std :: vector'. –

+0

@Anton_Savin спасибо, проблема решена –

0

Вы переменный объект не является экземпляром класса, а массивом.
, чтобы вы могли использовать инициализацию массива, пожалуйста, смотрите образец ниже:

#include "stdafx.h" 
using namespace std; 

class Class { 
public: 
    std::string val2; 
    int val2; 
    Class(std::string val1, int param2){ 
     val1 = param1; 
     val2 = param2; 
    } 
}; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    int a[3] = {1, 2, 3}; 
    for(int i=0; i<3; i++){ 
     printf("%i\n", a[i]); 
    } 

    Class object[3] = {Class("Text1",10), Class("Text2",20), Class("Text3",30)}; 

    for(int i=0; i<3; i++){ 
     printf("%s %i\n", object[i].val1, object[i].val2); 
    } 

    return 0; 
} 
Смежные вопросы