Obtuve un bucle en el que uso una función que devuelve std :: unique_ptr a un objeto de una clase abstracta. Quiero almacenar estos objetos en un estándar :: vector a través de push_back. Pero ya que los objetos son de tipo abstracto me sale el siguiente error:¿Cómo almacenar un vector de objetos de una clase abstracta que están dados por std :: unique_ptr?
error: cannot allocate an object of abstract type
para la línea
cells.push_back(std::move(*cell));
donde las células es un std::vector
del tipo abstracto y cell
es de tipo
std::unique_ptr<AbstractType>&& cell
(De hecho paso cell
a una clase de controlador) Sé que no se puede crear una instancia de un tipo abstracto y como yo Estoy entendiendo que el operador estándar: mover necesita instanciar el objeto de alguna manera?
¿Alguien me puede ayudar a solucionar el problema? ¿O debería la función (no mi parte del proyecto) devolver un puntero único a un objeto de tipo abstracto?
¿Estamos hablando de un 'vector'? Eso no funcionará Almacene un 'vector >' en su lugar. –
¡Tienes razón! Estaba ciego, lo cambié a 'vector>' y ahora funciona –
soriak
@ R.MartinhoFernandes: +1 en tu comentario (esa debería ser una respuesta). ¡Debes leer las mentes! –