Das ist schon möglich, nur muss man sich das Resultat des Casts merken, d.h. die Typinformation nicht gleich wieder verwerfen so wie da in diesem Beispiel der Fall ist.
Was du hier hast sind quasi zwei Teile:
1) der Cast, z.b. (BookMask*)mask, besser static_cast<BookMask*>(mask);
2) eine Zuweisung: mask = resultat_des_cast
Nach (1) "sieht" der Compiler den gecasteten Typ, also BookMask*.
"mask" ist aber vom Typ Mask*, d.h. nach (2) "sieht" der Compiler wieder nur die Typinformation Mask*
Nein. Der Pointercast ändert nichts am Objekt selbst, er verändert lediglich wie der Compiler das Objekt hinter dem Pointer betrachtet.
Alle view Pointer zeigen auf das selbe Objekt.Code:BookMask *bookMask = new BookMask; Mask *mask = bookMask; BookMask *bookMask2 = bookMask; BookMask *bookMask3 = static_cast<BookMask*>(mask);
Das sollte schon klappen. Der Code, der das Signal aussendet arbeitet davor und danach nur mit dem Basistyp, oder?
Ciao,
_
Lesezeichen