Я хотел бы иметь вектор 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>'
Наряду с несколькими строками ошибок ниже той, которая погружается в реализацию Microsoft std :: _ Copy_impl <>
...
Я изменил объявление члена на
vector<unique_ptr<Bar>>* barList;
И оно компилируется. Но я не могу не задаться вопросом, почему я не могу сделать это так, как хотел изначально? Для улыбки я попробовал это, и он отлично работает:
vector<Bar> barList;
Но теперь я теряю удобство unique_ptr
. Я хочу свой торт, и я тоже хочу его съесть!