初始化初始化列表c ++中的类数组

Naa*_*ama 1 c++ arrays initialization class list

我有这门课:

class Taxi {
   Wheel myWheel[4];
public:
   Taxi();
};
Run Code Online (Sandbox Code Playgroud)

和Wheel是另一类包含:

class Wheel{
   int radius,
       tickness;
public:
   Wheel(int,int);
};
Run Code Online (Sandbox Code Playgroud)

现在,我想要做的是在Taxi构造函数的初始化列表中初始化"myWheel [4]",如下所示:

Taxi::Taxi () :Wheel[0](5,5), Wheel[1](3,3), Wheel[2](5,5), Wheel[3](3,3) {
   cout << "Ctor of Taxi" << endl;
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我真的需要一些帮助,谢谢:)

πάν*_*ῥεῖ 6

您的初始化列表应该是这样的

Taxi::Taxi () : myWheel { Wheel(5,5), Wheel(3,3), Wheel(5,5), Wheel(3,3)} {
   cout << "Ctor of Taxi" << endl;
}
Run Code Online (Sandbox Code Playgroud)

观看现场演示

如果您没有符合当前c ++标准(c ++ 11)的编译器,则无法在成员初始化列表中执行此操作.您必须初始化构造函数体内的数组元素:

Taxi::Taxi () {
   cout << "Ctor of Taxi" << endl;
   myWheel[0] = Wheel(5,5);
   myWheel[1] = Wheel(3,3);
   myWheel[2] = Wheel(5,5); 
   myWheel[3] = Wheel(3,3);
}
Run Code Online (Sandbox Code Playgroud)

还要注意你应该做Wheel一个很好的课程.

  • @Naama,这需要C++ 11 (2认同)
  • 请检查此问答:[错误C2536的解决方法:无法在Visual Studio 2013中为数组指定显式初始化程序](http://stackoverflow.com/questions/19877757/workaround-for-error-c2536-cannot-specify-explicit-初始化 - 用于阵列式-VI).它看起来像VS2013(默认情况下为_supporting_c ++ 11). (2认同)