Usa dynamic_pointer_cast<>
Oppurecodice:for (list<spBase_t>::iterator i = l.begin(); i!= l.end(); i++) { spDerived_t sd = dynamic_pointer_cast<Derived>(*i); sd->print(); }
Se però il nuovo puntatore è nullo, hai un errore di accesso.codice:for (list<spBase_t>::iterator i = l.begin(); i!= l.end(); i++) { dynamic_pointer_cast<Derived>(*i)->print(); }

Rispondi quotando