Bonjour,
J'aimerais avoir quelques indications concernant l'héritage.
J'ai fait une classe Point qui modélise un point du plan :
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
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; } };
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.
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; } };
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 :
( j'ai enlevé le "*this" )
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; }
Merci.
Partager