在初始化列表 C++ 中初始化类数组

initialize class array in initialization list c++

本文关键字:初始化 数组 C++ 列表      更新时间:2023-10-16

我有这个类:

class Taxi {
   Wheel myWheel[4];
public:
   Taxi();
};

和轮子是另一个类包含:

class Wheel{
   int radius,
       tickness;
public:
   Wheel(int,int);
};

现在,我想做的是在 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;
}

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

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

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

观看现场演示

如果没有符合当前 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);
}

另请注意,您应该Wheel不错的课

只有当你

有一个支持 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);
}