このコードをコンパイルするには:
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;
}
};
これは、作成後にポッド メンバーを変更することに関心がないポッドを定義するための正しいアプローチですか? コピー コンストラクターを定義し、代入演算子をオーバーロードしなければならないのはなぜですか? これは、さまざまなプラットフォームの実装と互換性がありstd::vector
ますか? このような const PODS を持つのは間違っていると思いますか? それらを非定数のままにしておく必要がありますか?