Я хотел бы иметь вектор 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
.Я хочу свой торт, и я тоже хочу его съесть!