| SylfurdUUUURUTORAMAN §§ | 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
     |