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

How to initialize const std::vector<MyClass>

本文关键字:MyClass gt lt 初始化 std vector const      更新时间:2023-10-16

>我有一个这样的容器类

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}};
}

我尝试使用 VS2015 编译您的代码,它编译良好。

我认为您只是遇到了编译器错误。我建议将C++编译器升级到具有更好现代C++支持的较新版本。

附注:请注意,VS2015也支持Windows 7。