05/02/12 17:11
McFly
Salve ragazzi,
ho un problemino con l'ereditarietà, ed in particolare il cast.
Faccio, come al solito.., un esempio per spiegarmi.
class A
{
protected:
A *GetQualcosa();
};
class B : public A
{
....... qualcosa!
};
Supponiamo di aver ereditato il metodo GetQualcosa nella classe B.
Mi chiedevo, come faccio a far funzione un'assegnazione di questo tipo:
B *obj1,*obj2;
obj2 = obj1->GetQualcosa(); // il compilatore mi da problemi!
Ho letto su alcune guide che il cast da una classe base ad una classe derivata non è implicito (downcasting), allora come posso specificarlo? Qual'è il modo migliore?
Grazie!
Ultima modifica effettuata da McFly 05/02/12 18:11
aaa
05/02/12 21:06
Pitagora
In primis tutti i metodi appartenenti allo specificatore di accesso protected, non sono accessibili dall'esterno. Quindi per ovvie ragioni sostituiamo quel protected in public.
Bene, arriviamo al succo della questione. In C++ si possono effettuare assegnamenti solo da classe padre a classe figlio. Mi spiego meglio con un esempio:
Padre *myPadre = new Figlio; // questo e' possibile. Da base a derivata
Figlio *myFiglio = new Padre; // errore
Penso che sia chiaro adesso il problema
Qui c'è la soluzione nel caso non ti è chiaro qualche cosa
pastebin.com/…
Ultima modifica effettuata da Pitagora 05/02/12 21:15
aaa