我有一个这样的容器类
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}};
使用“英特尔编译器”(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}};
}