应该如何在C++11中初始化这个成员向量
How should one initialise this member vector in C++11-style?
我有一个类,它有一个成员变量std::vector<double>
。我想在该类的初始化列表中对此进行初始化。我已经尝试了以下代码
MyClass::MyClass()
: m_myMemberVector( { 1.0, 2.0 } )
{...}
但是编译器将其解释为CCD_ 3的CCD_。我看到了这个问题错误:"double"不是类、结构或联合类型,它指出了输入迭代器的问题,但没有提供解决方案。
我在构造函数的主体中有一个使用BOOST的工作实现,但如果可能的话,我宁愿在初始化列表中这样做。有没有什么优雅的方法可以使用C++11风格的初始化来构造一个包含两个双精度的向量?
std::initializer_list<double>{ 1.0, 2.0 }
而不是{ 1.0, 2.0 }
可能有效,删除{ 1.0, 2.0 }
周围的()
也可能有效。
很可能这是编译器中的一个错误,所以让事情变得更明确可能会有所帮助。
另一种可能是m_myMemberVector
实际上不是std::vector<double>
,或者您正在使用的标准库没有启用C++11。
简单的解决方案是正确的:C++11没有正确启用。我看到了格式的编译器输出
MyClass.cxx:5:5: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
并假设这意味着C++11支持将"默认启用"!显式使用-std=c++11
进行重新编译,效果如预期。
有一个答案暗示了这一点,我想接受,但它似乎已经被删除了。感谢所有提出这一点的评论。
相关文章:
- 为什么在C++中首先初始化成员类
- 是否可以防止省略聚合初始化成员?
- 正在复制具有未初始化成员的结构
- 使用大括号或括号初始化成员变量
- C++结构:强制初始化成员?
- C++中未初始化成员布尔变量的默认值是多少?
- 使用默认值初始化成员引用
- 在构造函数中初始化成员时,是否应该在成员上使用 std::move?
- C++使用 { } 初始化成员变量
- 如何根据构造函数参数使用超类类型初始化成员变量?
- OpenGL C++:VBO 的结构包装器不会初始化成员
- 有没有办法在Brace中初始化成员
- 从现有 istream 或类本身创建的 istream 初始化成员 istream
- 从其后声明的另一个成员数据初始化成员数据是否为未定义行为
- 通常应用方法,使用带有构造函数委托的 SFINAE 通过类模板的构造函数初始化成员
- 如何在嵌套类中初始化成员?C
- 是否可以在构造函数主体中初始化成员变量,而不是初始值设定项列表
- 编译器错误,因为构造函数必须显式初始化成员
- 如何使用成员函数初始化成员函数指针
- C 如何使用隐藏的默认构造函数初始化成员