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

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);
};
Rectangle.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
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 ?