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 :

Problème de constructeur sur une classe qui hérite


Sujet :

C++

  1. #1
    Débutant Avatar de razily
    Inscrit en
    Février 2009
    Messages
    376
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 376
    Points : 154
    Points
    154
    Par défaut Problème de constructeur sur une classe qui hérite
    Bonjour ;

    voilà j'ai deux classes : Piece et Pion
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    class Piece {
    
    	private:
    	char* couleur;
    	Case* place;
    	char etiq_Piece;
    
    
    public:
    	// constructeurs
    	Piece(char etiq1);
    	Piece(int col, int lig, char* coul, char etiq);
    	Piece(int col, int lig, char* coul);
            :: ici y a des méthodes etc ..
    
    }
    
    Piece::Piece(char etiq1) {
    	place = new Case();
    	etiq_Piece = etiq1;
    
    }
    
    
    Piece::Piece(int col, int lig, char* coul, char etiq){
    	place = new Case(col,lig,etiq);
    	couleur = coul;
    	etiq_Piece = etiq;
    
    
    
    }
    
    Piece::Piece(int col, int lig, char *coul){
    	place = new Case(col,lig);
    	couleur = coul;
    	etiq_Piece = this->etiq_Piece;
    
    }
    
    // classe Pion
    class Pion:public Piece {
    
    	private:
         char identifiant;
    
    
    	public:
    
        char GetIdentifiant() const {
            return identifiant;
        }
    
        void SetIdentifiant(char identifiant1) {
            this->identifiant = identifiant1;
        }
    
        Pion():Piece('P'){};
       
        Pion(int col, int lig, char *coul);
    
       // Pion(const Pion& orig);
        virtual ~Pion();
    
    };
    
    // Pion.cpp
      Pion::Pion(int col, int lig, char *coul){
    	Piece(col,lig,coul);  // ici j'appelle la classe Base
         this->setEtiquettePiece('P');
    
        
    }
    
    Pion::~Pion() {
    }
    et quand je compile sous Eclipse il m'indique ce genre de message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Description	Resource	Path	Location	Type
    no matching function for call to `Piece::Piece()'	Pion.cpp	/Chess/src	line 67	C/C++ Problem
    la ligne 67 correspond au constructeur dans Pion.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Pion::Pion(int col, int lig, char *coul)

    et ma question st ce qu'on doit passer par le constructeur par défaut Piece:iece() commme il indique pour un héritage ou cette erreur est dûe à quoi ??

    ma deuxième question :
    dans la classe pièce , vous avez remarqué que j'ai utilisé un pointeur sur case , vu que j'utilise new Case dans le constructeur est ce que le destructeur doit être comme çà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Piece::~Piece() {
    		// TODO Auto-generated destructor stub
    		delete place ;
    		delete couleur;
    	}

    merci d'avance pour vos réponses

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Pion::Pion(int col, int lig, char *coul){
         Piece(col,lig,coul);  // ici j'appelle la classe Base
         this->setEtiquettePiece('P');    
    }
    Ceci n'appelle pas le constructeur de la classe de base mais créé un objet temporaire sur la pile. Comme si tu écrivais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Piece tmp(col,lig,coul);
    sauf que tu ne le nomme pas.

    Pour appeler le constructeur de la classe de base il faut le faire dans la liste d'initialisation.

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    L'appel du constructeur de la classe de base ne se fait pas dans le corps du constructeur de la classe dérivée mais dans la liste d'initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Pion::Pion(int col, int lig, char *coul)
    :Piece(col,lig,coul)
    {
       setEtiquettePiece('P');
    }
    [EDIT] grilled

  4. #4
    Débutant Avatar de razily
    Inscrit en
    Février 2009
    Messages
    376
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 376
    Points : 154
    Points
    154
    Par défaut
    Encore merci à vos réponses , vraiment j'ai appris des choses nouvelles que j'ai longtemps ignoré en postant ce message

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/05/2009, 09h41
  2. Réponses: 2
    Dernier message: 22/04/2008, 11h13
  3. Réponses: 7
    Dernier message: 25/03/2005, 14h05
  4. Réponses: 14
    Dernier message: 14/03/2005, 09h16
  5. probléme de cadre sur une image qui me sert de lien
    Par thomas_chamas dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 26/11/2004, 17h36

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