我想有一個unique_ptr的向量作爲我正在創建的類的成員。如何將unique_ptr的向量聲明爲類數據成員?
class Foo {
[...]
private:
vector<unique_ptr<Bar>> barList;
}
但後來我開始從VS2010編譯器越來越神祕的錯誤消息:
error C2248: 'std::unique_ptr<_Ty>::operator =' : cannot access private member declared in class 'std::unique_ptr<_Ty>'
隨着低於誤差線的那一疊潛入微軟的落實std::_Copy_impl<>
...
我將會員聲明更改爲
vector<unique_ptr<Bar>>* barList;
它編譯。但我不禁想知道爲什麼我不能像我最初想要的那樣去做?對於笑容,我想這和它的作品罰款:
vector<Bar> barList;
但現在我失去了unique_ptr
便利。我想要我的蛋糕,我也想吃!
我在看http://stackoverflow.com/questions/8553464/vector-as-a-class-member,答案似乎認爲像我這樣聲明一個'vector'就好了。但出於某種原因,在添加'unique_ptr'部分時似乎會觸發非法副本。 –
你的副本構造函數和賦值運算符是什麼樣的? –
私人轉讓,但複製構造是罪魁禍首。當我意識到我在使用錯誤的所有權語義時,從'unique_ptr'切換到'shared_ptr'。 –