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

C++ 初始化初始化列表c+中的类数组+;,c++,arrays,list,class,initialization,C++,Arrays,List,Class,Initialization,我有这门课: class Taxi { Wheel myWheel[4]; public: Taxi(); }; 车轮是另一类,包括: class Wheel{ int radius, tickness; public: Wheel(int,int); }; 现在,我想做的是在出租车构造函数的初始化列表中初始化“myWheel[4]”,如下所示: Taxi::Taxi () :Wheel[0](5,5), Wheel[1](3,3), Wheel[2](

我有这门课:

class Taxi {
   Wheel myWheel[4];
public:
   Taxi();
};
车轮是另一类,包括:

class Wheel{
   int radius,
       tickness;
public:
   Wheel(int,int);
};
现在,我想做的是在出租车构造函数的初始化列表中初始化“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;
}
Taxi::Taxi():车轮[0](5,5),车轮[1](3,3),车轮[2](5,5),车轮[3](3,3){

cout您的初始化列表应该如下所示

Taxi::Taxi () : myWheel { Wheel(5,5), Wheel(3,3), Wheel(5,5), Wheel(3,3)} {
   cout << "Ctor of Taxi" << endl;
}
Taxi::Taxi():myWheel{Wheel(5,5),Wheel(3,3),Wheel(5,5),Wheel(3,3)}{

cout您的初始化列表应该如下所示

Taxi::Taxi () : myWheel { Wheel(5,5), Wheel(3,3), Wheel(5,5), Wheel(3,3)} {
   cout << "Ctor of Taxi" << endl;
}
Taxi::Taxi():myWheel{Wheel(5,5),Wheel(3,3),Wheel(5,5),Wheel(3,3)}{

cout如果你有一个支持C++11的编译器,你只能初始化数组,然后你就可以这样做了

Taxi::Taxi () :myWheel{{5,5}, {3,3}, {5,5}, {3,3}} { ... }
如果没有支持C++11的编译器,则必须手动初始化数组:

Taxi::Taxi()
{
    myWheel[0] = Wheel(5, 5);
    myWheel[1] = Wheel(3, 3);
    myWheel[2] = Wheel(5, 5);
    myWheel[3] = Wheel(3, 3);
}

如果您有一个支持C++11的编译器,那么您只能初始化数组,然后您就可以这样做了

Taxi::Taxi () :myWheel{{5,5}, {3,3}, {5,5}, {3,3}} { ... }
如果没有支持C++11的编译器,则必须手动初始化数组:

Taxi::Taxi()
{
    myWheel[0] = Wheel(5, 5);
    myWheel[1] = Wheel(3, 3);
    myWheel[2] = Wheel(5, 5);
    myWheel[3] = Wheel(3, 3);
}

它不工作:/errors:-仅允许“()”作为数组成员“AutoTaxi::\u taxiWheel”的初始值设定项-应为声明-应为“;”-“AutoTaxi::AutoTaxi::\u Taxwheel”:无法为指定显式初始值设定项arrays@Naama好的,链接的演示程序可以正常运行。你确定正确复制了代码吗?我必须修复一些其他错误,直到它正常运行。还要注意
轮子
滑行
的声明顺序。y是什么我们的编译器版本语言标准标志实际上是?@Naama,这需要C++11#πάνταῥεῖ 抱歉,我不知道如何检查编译器版本。我知道我使用的是visual studio pro 2013版本12.0.21请检查此问答:。看起来VS2013(默认支持c++11)对此已失效。它不起作用:/errors:-只允许“()”作为数组成员“AutoTaxi:”的初始值设定项-应为声明-应为“;”-“AutoTaxi::AutoTaxi::\u Taxwheel”:无法为指定显式初始值设定项arrays@Naama好的,链接的演示程序可以正常运行。你确定正确复制了代码吗?我必须修复一些其他错误,直到它正常运行。还要注意
轮子
滑行
的声明顺序。y是什么我们的编译器版本语言标准标志实际上是?@Naama,这需要C++11#πάνταῥεῖ 抱歉,我不知道如何检查编译器版本。我知道我使用的是visual studio pro 2013版本12.0.21请检查此问答:。它看起来像VS2013(默认支持c++11)错误:不能正确地工作。错误:不能指定AraySI的显式初始化器。不要认为第二个变体是合法的C++。每个人都是正确的,在前C ++ 11中是无效的。更新我的答案不起作用。错误:不能指定ARRAYSI的显式初始化器。不要认为第二个变体是合法C++。每个人都是。正确,在C++11之前版本中无效。更新了我的答案