2016-09-22 3 views
2

Это может быть простой вопрос, но я пытаюсь инициализировать массив объектов с помощью параметризованного конструктора. Например:C++ 03 Инициализация массива объектов с несколькими параметрами

class A{ 
public: 
    int b,c,d; 
    A (int i, int j); 
}; 

void A::A(int i, int j){ 
    d = rand() 
    b = 2*i; 
    c = 3*j; 
} 

void main(){ 
    A a[50]; /*Initialize the 50 objects using the constructor*/ 
} 

Я уже пытался с вектором инициализации, как указано в ссылке this однако, так как есть 2 параметра, это не работает.

Также, как указано в этом link, невозможно и утомительно вручную вводить 50 значений инициализации.

Есть ли более простой способ. Кроме того, значения i, j одинаковы для всех объектов (доступны через main()), но d должно быть случайным значением и отличается от каждого объекта.

ответ

2

Вы можете использовать зЬй :: генерировать

Пример:

A generator(){ return A(1,2); } 

std::generate(a, a + (sizeof(a)/sizeof(a[0])), generator); 
+1

Удачи с этим в C++ 03! (Нет lambdas до C++ 11). –

+0

Да, я забыл об этом. Обновлено –

+0

Это хорошо. Сейчас я это сделаю. –

0

Почему бы не указать аргументы по умолчанию для вашего конструктора с двумя аргументами?

A (int i = 0, int j = 0);

Тогда он будет стоять за конструктор по умолчанию, и A a[50]; будет использовать его автоматически 50 раз.

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