[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-----