Sylfurd UUUURUTORAMAN §§ | 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:
Code :
- class Point3D
- {
- protected:
- float X,Y,Z;
- public:
- Point3D(float x=0, float y=0, float z=0):
- X(x), Y(y), Z(z){}
- float get_X(){return X;}
- float get_Y(){return Y;}
- float get_Z(){return Z;}
- };
|
J'ai ensuite 2 classes Vertex (un vertex, des vertices) et Vector qui dérivent tout deux de la classe Point3D:
Code :
- class Vector: public Point3D
- {
- public:
- Vector(float x=0, float y=0, float z=0):Point3D(x, y, z){}
- };
- class Vertex: public Point3D
- {
- public:
- Vertex(float x=0, float y=0, float z=0):Point3D(x, y, z){}
- Vector operator-(const Vertex& ) const;
- };
|
Et là la définition de la méthode de surcharge de l'opérateur - :
Code :
- Vector Vertex::operator-(const Vertex& v2) const
- {
- cout << v2.get_X() << " ";
- Vector vv(1,2,3); // ne tenez pas compte de ces 2 dernieres lignes
- return vv;
- }
|
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 |