如何初始化const std::vector<MyClass>

How to initialize const std::vector<MyClass>

我有一个这样的容器class

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,但在 [=33 下失败=].编译器是一样的,只不过前端是visual studio2013.

我收到错误消息:

 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++ 支持的更新版本。

P.S。请注意,VS2015 也支持 Windows 7。