Bonjour
Je dois r�aliser un programme qui permer de dessiner des formes g�om�triques et d'obtenir le tout sur un fichier bitmap.
Mon programme est fonctionnel, or je pense pouvoir l'optimiser un peu plus en utilisant plus d'h�ritage. Pour le moment toutes mes formes g�om�riques h�ritent de ma classe "Formes".
Mon probl�me est le suivant , j'ai deux classes : la classe Rectangle , et la classe Carre ( qui comme leur nom l'indiue , me permet de tracer un carre ou un rectangle ); Du fait qu'un carr� est un rectangle + sp�cialis�, je souhaiterai que mon carr� soit un h�ritage du rectangle, mais lorsque que je commence � cod� j'obtiens l'erreur suivante "Rectangle n'est pas d�fini" .
Voici mon code initiale sans l'h�ritage :
Rectangle.h
Rectangle.cpp
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 class Rectangle: public Formes { public: Rectangle(int _X,int _Y,int _longueur,int _hauteur,string _Couleur,int _Transparence,int _Plan,int _Echelle); virtual ~Rectangle(); void Dessiner(CImage *image); };
_____________________________
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
28
29
30
31
32
33
34
35
36
37
38
39
40 Rectangle::Rectangle(int _X,int _Y,int _longueur,int _hauteur,string _Couleur,int _Transparence,int _Plan,int _Echelle) { X1=_X; Y1=_Y; X2=_longueur+_X; Y2=_hauteur+_Y; Couleur=_Couleur; Transparence=_Transparence; Plan = _Plan; Echelle = _Echelle; if(X1>X2) Xmax_tmp=(X1*Echelle)+Echelle; else Xmax_tmp=(X2*Echelle)+Echelle; if(Y1>Y2) Ymax_tmp=(Y1*Echelle)+Echelle; else Ymax_tmp=(Y2*Echelle)+Echelle; Find_Xmax(); Find_Ymax(); } void Rectangle::Dessiner(CImage* _image) { image=_image; Droite *Droite_tmp = new Droite(X1,Y1,X1,Y2,Couleur,Transparence,Plan,Echelle); //vertical gauche Droite_tmp->Dessiner(image); Droite_tmp = new Droite(X2,Y1,X2,Y2,Couleur,Transparence,Plan,Echelle); //vertical droite Droite_tmp->Dessiner(image); Droite_tmp = new Droite(X1+1,Y1,X2-1,Y1,Couleur,Transparence,Plan,Echelle); //horizontal haut Droite_tmp->Dessiner(image); Droite_tmp = new Droite(X1+1,Y2,X2-1,Y2,Couleur,Transparence,Plan,Echelle); //horizontal bas Droite_tmp->Dessiner(image); delete Droite_tmp; } Rectangle::~Rectangle() { }
Carre.cpp
_______________________________
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
28
29
30
31
32 Carre::Carre(int _X,int _Y,int _cote,string _Couleur,int _Transparence,int _Plan,int _Echelle) { X1=_X; Y1=_Y; X2=_cote; Y2=_cote; Couleur=_Couleur; Transparence=_Transparence; Plan=_Plan; Echelle=_Echelle; Xmax_tmp=(_cote+_X)*Echelle; Ymax_tmp=(_cote+_Y)*Echelle; Find_Xmax(); Find_Ymax(); } void Carre::Dessiner(CImage* _image) { image = _image; Rectangle *Rectangle_tmp = new Rectangle(X1,Y1,X2,Y2,Couleur,Transparence,Plan,Echelle); Rectangle_tmp->Dessiner(image) ; delete Rectangle_tmp; } Carre::~Carre(void) { }
Carre.h
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 class Carre: public Formes { public: Carre(int _X,int _Y,int _cote,string _Couleur,int _Transparence,int _Plan,int _Echelle); virtual ~Carre(void); void Dessiner(CImage *image); };
Comment puis je r�aliser mon carr� par un h�ritage du rectangle ?
Partager