要编译此代码:
std::vector<Foo> factory()
{
std::vector<Foo> data;
return data;
}
我必须像这样定义我的 POD:
struct Foo
{
const int i;
const int j;
Foo(const int _i, const int _j): i(_i), j(_j) {}
Foo(Foo& foo): i(foo.i), j(foo.j){}
Foo operator=(Foo& foo)
{
Foo f(foo.i, foo.j);
return f;
}
};
这是定义一个我不想在创建后更改 pod 成员的 pod 的正确方法吗?为什么我必须定义一个复制构造函数并重载赋值运算符?这是否兼容不同的平台实现std::vector
?您认为拥有这样的 const PODS 是错误的吗?我应该将它们保留为非常量吗?