[Kos-dev] Galere
Raphaël Junqueira
kos-dev@enix.org
Fri, 17 Jan 2003 19:28:05 +0100
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Friday 17 January 2003 17:55, d2 wrote:
> >>>>> "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).
lol
enfin je suis certain que sous windows cette cochonnerie me renvoie une exception (du vecu aussi)
et quand tu desactive les exceptions c bien sur le SEGV qui t'attend
enfin pour ton idee de downcaster une struct -> classe + vft (je suppose que c'est de la que venait le probleme)
g fait plus bo: une vft (ecrit a la main) dans la struct :)
> 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.
ah, jamais eut d'exception la dessus, comment on fait ?
Raphael
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
iD8DBQE+KEs1p7NA3AmQTU4RAjU2AJ9z0SveaFEJ8BMa97O4fW5WjHfefgCfbVC4
vn6H0wjG3uN4xUSoe2kHnew=
=9gno
-----END PGP SIGNATURE-----