Инициализация массива объектов C ++ в списке инициализатора конструктора - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь инициализировать массив объектов. Это похоже на ошибку в Keil, используя компилятор arm cc, используя флаг --cpp11.

Ниже приведен мой класс Wheel, который будет использоваться позже в Vehicle. class.

class Wheel
{
public:
    Wheel(const uint8_t diameter);
private:
    uint8_t m_diameter;
};

Класс Vehicle использует массив Wheel, и они инициализируются в конструкторе. В идеале я хотел бы инициализировать его так:

class Vehicle
{
public:
    Vehicle();

private:
    Wheel wheels[3];
};

//in Wheel.cpp
// Constructor 
Vehicle::Vehicle()
    : wheels{Wheel(3),Wheel(4),Wheel(5)} 
{}

Другой вариант - инициализировать все в теле конструктора, например:

Vehicle::Vehicle(){
wheel[0] = Wheel(3);
wheel[1] = Wheel(4);
wheel[2] = Wheel(5);}

Компилятор Документация упоминает:

ARM Compiler поддерживает списки инициализаторов и унифицированную инициализацию, но стандартная библиотека не обеспечивает реализацию std::initializer_list. С предоставленной пользователем реализацией std::initializer_list можно использовать списки инициализаторов и равномерную инициализацию.

Как определить список инициализаторов для моего сценария использования?

...