我正在尝试初始化一个对象数组。这似乎在 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);}
编译器文档提到:
ARM 编译器支持初始化列表和统一初始化,但标准库不提供
std::initializer_list
. 可以使用用户提供的std::initializer_list
初始化列表和统一初始化实现。
如何为我的用例定义初始化列表?