我有一个像这样的容器类
class Container {
public:
Container(const std::string name, const double value)
: name(name), value(value),{};
const std::string name;
const double value;
};
我喜欢初始化 const std::vector<Container>
。
这个
const std::vector<Container> sets{{"foo", 0}, {"bar", 1}};
使用 intel 编译器(版本 15.0.3(gcc 版本 4.8.2 兼容性))和 c++11 启用( -std=c++11
)可以正常工作,这适用于 RedHat6,但在 Windows7 下失败。编译器完全相同,但前端是 Visual Studio 2013。
我收到错误消息:
no operator "=" matches these operands
operand types are: Container = Container
_Right = _Move(_Tmp);
我需要编写自己的复制构造函数吗?
完整的例子是
#include <vector>
#include <string>
class Container {
public:
Container(const std::string name, const double value) : name(name), value(value){};
const std::string name;
const double value;
};
int main() {
const std::vector<Container> sets{{"foo", 0.0},{"bar", 1.0}};
}
最佳答案
我尝试用 VS2015 编译你的代码,它编译得很好。
我认为您只是遇到了编译器错误。我建议将您的 C++ 编译器升级到具有更好的现代 C++ 支持的新版本。
附注请注意,VS2015 也支持 Windows 7。
关于c++ - 如何初始化 const std::vector<MyClass>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50216426/