¿Cómo declarar un vector de unique_ptr's como miembro de datos de clase?
Me gustaría tener un vector de unique_ptr's como miembro de una clase que estoy haciendo.
class Foo {
[...]
private:
vector<unique_ptr<Bar>> barList;
}
Pero luego empiezo a recibir mensajes de error crípticos de la VS2010 compilador:
error C2248: 'std::unique_ptr<_Ty>::operator =' : cannot access private member declared in class 'std::unique_ptr<_Ty>'
Junto con un puñado de líneas de error debajo de las que se sumergen en la implementación de Microsoft destd::_Copy_impl<>
...
Cambié la declaración de miembro a
vector<unique_ptr<Bar>>* barList;
Y se compila. Pero no puedo evitar preguntarme por qué no puedo hacerlo de la manera que originalmente quería. Para sonrisas, probé esto y funciona bien:
vector<Bar> barList;
Pero ahora pierdo la comodidad deunique_ptr
. ¡Quiero mi pastel y quiero comerlo también!