c++ - 在初始化列表c++中初始化类数组

标签 c++ arrays list class initialization

我有这门课:

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

Wheel 是另一个类,包含:

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

查看 LIVE DEMO

如果您没有符合当前 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 设置为 nice class那么。

关于c++ - 在初始化列表c++中初始化类数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27360370/

相关文章:

arrays - 扩展 bash 数组只给出第一个元素

删除 R 中的空间异常值(纬度和经度坐标)

Python 将具有偶然模式的列表中的元素提取到元组中

c++ - 使用路径变量时包含不扩展的路径

c++ - 通过 FTP 上传文件的进度条 [C++]

python - 如何合并列表中的相似项目

php - 传递给 each() 的数组为空

c - 打印结构的所有 "members"

c++ - Boost.Log 和创建守护进程; `fork` 不允许?

c++ - 获取点 vector 的边界框?