爲了得到這個代碼編譯:常量莢和std :: vector的
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成員?爲什麼我不得不定義複製構造函數並重載賦值運算符?這是否兼容std::vector
的不同平臺實現?你認爲有這樣的const PODS是錯誤的嗎?我應該把它們作爲非const嗎?
你的'operator ='是無意義的;不是分配左操作數的成員(不能完成),而是創建一個新對象並將其返回。這項任務如何? – Praetorian
更改爲'Foo&' –
@CodingMash這樣做,你會返回一個臨時參考 – Praetorian