[Kos-dev] Galere
d2
kos-dev@enix.org
17 Jan 2003 17:55:25 +0100
>>>>> "fenix" == fenix <fenix@club-internet.fr> writes:
fenix> - static_cast (les anciens casts C dans le code C++ sont
fenix> remplaces par celui-ci, emet une exception si l'heritage
fenix> n'est pas valide)
Pas d'exception levee a ma connaissance. static_cast fait juste la
translation d'adresse entre les adresses de debut des 2 objets si
necessaire, mais ne garantit pas que le ptr resultat pointe vraiment
sur un vrai objet vraiment valide. Donc a terme, l'exception en
question c'est plutot un truc genre SEGV liee aux objets qui
s'ecrasent mutuellement. Ce truc la est interessant meme quand
dynamic_cast (qui evite le pb precedent) est dispo. Par exemple dans
le cas ou on veut downcaster proprement une structure C (=> pas de
RTTI) en un objet C++ qui en herite, en evitant les pbs liees a
l'heritage multiple possible qui aurait pu decaler les adresses des 2
objets (ca sent le vecu).
fenix> - dynamic_cast (renvoie NULL, si l'heritage n'est pas
fenix> valide)
La Ok, d'accord. Dans certains cas on a aussi une exception possible.
--
d2