Altri problemi
Ho provato a fare come mi hai detto tu:
std::shared_ptr<Shape> prova;
prova = new Rectangle();
ma mi vengono restituiti questi errori:
'=' binario: non è stato trovato alcun operatore che accetti un operando destro di tipo 'Rectangle *'. È anche possibile che non vi siano conversioni accettabili.
IntelliSense: nessun operatore "=" corrispondente agli operandi.
I tipi di operando sono: std::shared_ptr<Shape> = Rectangle *
Ma il "new" non dovrebbe già restituire un puntatore?
Altra cosa è che se io scrivo
std::shared_ptr<Shape> prova {new Rectangle()};
Il compilatore non da problemi, ma a run-time succede questo:
'cast di tipo': conversione da 'Rectangle *' a 'Shape *' esistente ma inaccessibile
Premetto che Shape contene un metodo virtuale puro, potrebbe essere quello che da problemi? In tal caso come devo implementare il tutto per farlo funzionare?
Il mio intento è fare una cosa del genere:
std::list<std::shared_ptr<Shape>> lista;
e poter gestire dinamicamente gli oggetti nel programma.