通常在编写构造函数时,我尝试在成员初始化列表中初始化尽可能多的类成员,包括Invalidate()
等容器。
std::vector
由于技术原因,我现在需要将其拆分为一个向量数组。
class MyClass
{
protected:
std::vector<int> myvector;
public:
MyClass() : myvector(500, -1) {}
}
事实证明,我无法以这种方式初始化向量数组。我究竟做错了什么?或者这是不可能的?
当然我仍然可以使用class MyClass
{
protected:
std::vector<int> myvector[3];
public:
MyClass() : myvector[0](500, -1), myvector[1](250, -1), myvector[2](250, -1) {}
}
在ctor的主体中执行此操作,但我更喜欢在成员初始化列表中执行此操作。
答案 0 :(得分:2)
您应该初始化整个数组,但不是每个元素。初始化数组的正确语法应为
MyClass() : myvector {std::vector<int>(500, -1), std::vector<int>(250, -1), std::vector<int>(250, -1)} {}