我有一个像这样的容器类
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}};
}
答案 0 :(得分:2)
我尝试使用VS2015编译你的代码,它编译得很好。
我认为你只是遇到编译器错误。我建议将C ++编译器升级到更新版本,并提供更好的现代C ++支持。
P.S。请注意,VS2015也支持Windows 7.