在构造函数初始化器列表中初始化C ++对象数组

时间:2020-03-02 14:27:39

标签: c++ arm keil armcc

我正在尝试初始化对象数组。在Keil中,使用 armcc 编译器以及--cpp11标志,这似乎失败了。

以下是我的课程Wheel,稍后将在Vehicle类中使用。

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

编译器documentation提到:

ARM编译器支持初始化程序列表和统一初始化,但是标准库不提供std::initializer_list的实现。通过用户提供的std::initializer_list初始化程序列表实现,可以使用统一的初始化程序。

如何为用例定义一个初始化列表?

0 个答案:

没有答案
相关问题