Inoltre sei subito capitato in uno dei problemi classici del C++ per quanto concerne le classi base: i binary methods.
Codice come questo comporta un sacco di problemi alle classi derivate per la gestione dei tipi. Evita questi metodi o implementali con un template.codice:Base* prova2(Base*);