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.