Мне было интересно, как правильно инициализировать std::array
член класса в конструкторе, когда начальные значения массива являются параметрами для конструктора?
Более конкретно, рассмотрим следующий пример:
class Car {
public:
Car(const std::string& color, int age): color_(color), age_(age) {}
// ...
private:
std::string color_;
int age_;
};
class ThreeIdenticalCars {
private:
std::array<Car, 3> list;
public:
ThreeIdenticalCars(const std::string& color, int age):
// What to put here to initialize list to 3 identical Car(color,age) objects?
{}
};
Очевидно, один способ - написать list({Car(color,age), Car(color,age), Car(color,age)})
, но это явно не масштабируется, если мы хотели 30 одинаковых автомобилей вместо трех.
Если вместо std::array
я использовал std::vector
решение было бы list(3, Car(color,age)
(или list(30, Car(color, age))
, но, поскольку в моей проблеме известен размер списка, я подумал, что правильнее было бы использовать std:array
.