Probleme heritage/surcharge d'operateur - C++ - Programmation
Marsh Posté le 09-02-2004 à 12:25:41
float get_X() const {return X;}
float get_Y() const {return Y;}
float get_Z() const {return Z;}
Marsh Posté le 09-02-2004 à 12:28:32
Au purée, le boulay
Merci beaucoup Chrisbk ca fonctionne je ne pensait pas du tout à ça! Maintenant je ferait moins d'erreur de déclaration de méthode constantes grâce à toi
Marsh Posté le 09-02-2004 à 13:03:56
on doit le mettre même s'il est trivial ?
Marsh Posté le 09-02-2004 à 13:09:43
ben le virtuel est pas le mode par défaut alors oui, il faut l'écrire. et je vous vois venir avec vos destructeurs virtuels pures ... qui saurait dire pourquoi ça marche pas ?
Marsh Posté le 09-02-2004 à 13:21:54
bin un destructeur virtuel pure doit qd mm être défini
(d'ailleurs c un peu flou encore pour moi )
Marsh Posté le 09-02-2004 à 13:25:59
mais quelle est la différence entre ces 2 écritures alors :
Code :
|
et
Code :
|
Marsh Posté le 09-02-2004 à 17:03:23
pour une classe abstraite, le destructeur trivial virtuel est aussi indispensable ?
Marsh Posté le 09-02-2004 à 17:12:23
oui, par ce qu'un destructeur ne peut être conceptuellement virtuel pure puisque toute classe a entre autes un destructeur (non virtuel par défaut)
Marsh Posté le 09-02-2004 à 17:23:45
rah c embetant ca ...
il y a une raison précise pour que l'absence de déclaration de desctructeur soit implicitement écrite par le compilo pour un destructeur trivial, plutot qu'un destructeur trivial virtuel ?
Marsh Posté le 09-02-2004 à 17:28:58
par ce que le C++ est basé sur un principe « on ne paie que pour ce qu'on utilise ».
la virtualité a un coup, insignifiant pour 99% des applications, mais C++ a été avant tout créé pour écrire des sytèmes d'exploitations et des programmes exigeants, donc ce n'est pas le comportement par défaut.
Marsh Posté le 09-02-2004 à 12:20:34
Bon voila, j'ai un probleme que je n'arrive absolument pas à comprendre.... Je souhaite gérer des vertices (points) et des vecteurs en 3D... Mon probleme se situe sur une surcharge de l'operateur - pour les vertices qui devrait renvoyer un vecteur:
Tout d'abord j'ai une classe Point3D ne contenant que les 3 coordonnées X, Y et Z:
J'ai ensuite 2 classes Vertex (un vertex, des vertices) et Vector qui dérivent tout deux de la classe Point3D:
Et là la définition de la méthode de surcharge de l'opérateur - :
En fait le problème vient du v2.get_X() que le compilateur n'aime pas du tout (j'utilise Dev-C++ qui utilise lui meme gcc) et qui me dit: passing `const Vertex' as `this' argument of `float
Vertex::get_X()' discards qualifiers
Apparement c'est le passage par référence constante qu'il n'aime pas, si je mets un passage normal ça semble fonctionner, mais je ne comprends absolument pas pourquoi :\
Si vous pouviez m'éclairer ce serait sympa