【发布时间】:2014-10-23 12:21:55
【问题描述】:
我有一个类的成员变量是std::vector<double>。我想在类的初始化列表中初始化它。我试过下面的代码
MyClass::MyClass()
: m_myMemberVector( { 1.0, 2.0 } )
{...}
但编译器将此解释为std::vector 的(itBegin, itEnd) 构造函数。我看过这个问题error: ‘double’ is not a class, struct, or union type,它指出了输入迭代器的问题,但没有提供解决方案。
我有一个在构造函数主体中使用 BOOST 的工作实现,但如果可能的话,我宁愿在初始化列表中执行此操作。有没有什么优雅的方法可以使用 C++11 风格的初始化构造一个包含两个双精度的向量?
【问题讨论】:
-
听起来像一个错误。你用的是哪个编译器?
-
你确定构造函数被选中了吗?您可以发布代码来证明这一点吗?在任何情况下,请尝试省略
(),即m_myMemberVector{ 1.0, 2.0 }。 -
去掉大括号
m_myMemberVector{ 1.0, 2.0 } -
等等:你启用 C++11 了吗?仍然得到迭代器错误?
标签: c++ c++11 vector initialization