Как объявить вектор 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>'

Наряду с несколькими строками ошибок ниже той, которая погружается в реализацию Microsoft std :: _ Copy_impl <> ...

Я изменил объявление члена на

vector<unique_ptr<Bar>>* barList;

И оно компилируется. Но я не могу не задаться вопросом, почему я не могу сделать это так, как хотел изначально? Для улыбки я попробовал это, и он отлично работает:

vector<Bar> barList;

Но теперь я теряю удобство unique_ptr . Я хочу свой торт, и я тоже хочу его съесть!

9
задан Bret Kuhns 24 January 2012 в 14:15
поделиться