如何初始化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。
我有一个这样的容器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。