[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