Ho ottenuto un ciclo in cui utilizzo una funzione che restituisce std :: unique_ptr a un oggetto di una classe astratta. Voglio memorizzare questi oggetti in un vettore std :: push_back. Ma dal momento che gli oggetti sono di tipo astratto ottengo il seguente errore:Come memorizzare un vettore di oggetti di una classe astratta che sono dati da std :: unique_ptr?
error: cannot allocate an object of abstract type
per la linea
cells.push_back(std::move(*cell));
in cui le cellule è un std::vector
di tipo astratto e cell
è di tipo
std::unique_ptr<AbstractType>&& cell
(In realtà passo cell
a una classe di gestore) So che non è possibile creare un'istanza di tipo astratto e come capisco lo std: muovere l'operatore ha bisogno di istanziare l'oggetto in qualche modo?
Qualcuno può aiutarmi a gestire il problema? O la funzione (non la mia parte del progetto) non restituisce un puntatore univoco a un oggetto di tipo astratto?
Stiamo parlando di un 'vector'? Quello non funzionerà. Memorizza invece un 'vector >'. –
Hai ragione! Ero cieco, l'ho cambiato in 'vector>' e ora funziona –
soriak
@ R.MartinhoFernandes: +1 sul tuo commento (che dovrebbe essere una risposta). Devi leggere le menti! –