Bonjour,

J'aimerais avoir quelques indications concernant l'héritage.
J'ai fait une classe Point qui modélise un point du plan :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Point{
protected:
        double x,y;
public:
       Point(double a=0., double b=0.) {
                    x=a;
                    y=b;
                    }
       Point( const Point & a)
       {
              x=a.x;
              y=a.y;
       }
       Point & operator =( const Point & a)
       {
              x=a.x;
              y=a.y;
              return * this;  
       }
 
       Point& deplace(double dx, double dy)
       {
             x=x+dx;
             y=y+dy;
             return *this;
       }                    
};
Et je voudrais faire maintenant une classe Vecteur3D qui hérite de la classe Point. Voici ce que j'ai fait pour l'instant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
class Vecteur3D : public Point {
 
protected :
        double z;
public:
        Vecteur3D( double a=0, double b=0, double c=0 ){
            x=a;
            y=b;
            z=c;        
        }    
 
};
Je voudrais maintenant implémenter une méthode "deplace" qui permette de déplacer un vecteur selon le même principe que la méthode deplace() de la classe Point.
Pour cela j'ai fait la méthode suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Vecteur3D& deplace(double dx, double dy, double dz)
        {
                   Point::deplace(dx,dy);
                   z=z+dz;
                   return *this;
                   }

Ce code compile et marche correctement.
Mais je me demande si c'est bien comme cela qu'il faut faire, et aussi je comprends pas pourquoi j'ai pas d'erreur de comilation si j'écris simplement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Vecteur3D& deplace(double dx, double dy, double dz)
        {
                   Point::deplace(dx,dy);
                   z=z+dz;               
                   }
( j'ai enlevé le "*this" )

Merci.