IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Notion d'heritage entre 2 classes


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Par défaut Notion d'heritage entre 2 classes
    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 ?

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu ne peux pas faire ton carré par héritage du rectangle. C'est un problème connu.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Heritage entre 2 classes
    Par deadcankill dans le forum Langage
    Réponses: 1
    Dernier message: 08/02/2009, 20h43
  2. probleme d'heritage entre 2 classes
    Par Shrine dans le forum C++
    Réponses: 6
    Dernier message: 11/08/2007, 22h27
  3. [Diagramme de classe] Notion d'ordre entre objet
    Par Laetitia_Stage dans le forum Diagrammes de Classes
    Réponses: 5
    Dernier message: 09/04/2007, 18h44
  4. [Diagramme de classe] Notion d'ordre entre objet
    Par Laetitia_Stage dans le forum Diagrammes de Classes
    Réponses: 1
    Dernier message: 05/04/2007, 18h44
  5. [heritage] etendre une classe interne en dehors du package
    Par ChristopheH dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2004, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo