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:
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:
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:
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:
1
2
3
4
5 Vecteur3D& deplace(double dx, double dy, double dz) { Point::deplace(dx,dy); z=z+dz; }
Merci.