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 (héritage || class || constructeur )?


Sujet :

C++

  1. #1
    Membre confirmé

    Inscrit en
    Mai 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 72
    Par défaut problème (héritage || class || constructeur )?
    Salut tout le monde ....
    Je débute à peine en c++ et je croise pas mal de problème ce pendant ...
    et l'un des problèmes qui me bloque totalement est à propos des constructeurs ...
    Donc voilà , j'ai crée une classe "Personnage" et une autre Guerrier qui hérite de cette dernière ...
    et j'ai deux constructeurs dans la classe "Personnage" ,un constructeur par défaut et un autre où on peut attribuer des valeurs...
    Un bout de code sera utile je sais !! :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //personnage.cpp
    Personnage::Personnage(): m_vie(100) ,m_mana(100) 
    {
     m_arme= new Arme() ;    
                               }
     
    Personnage::Personnage(string nom_arme,int degats_arme): m_vie(100),m_mana(100) 
    {
     m_arme= new Arme(nom_arme,degats_arme) ;    
                               }
    Et voilà la sous-classe "Guerrier"
    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
     
    //guerrier.h
    #ifndef DEF_GUERRIER
    #define DEF_GUERRIER
    #include "personnage.h"
     
    class Guerrier : public Personnage
    {
          public :
          void coup_poing(Personnage &cible);
     
     
          };
     
    #endif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //guerrier.cpp
    void Guerrier::coup_poing(Personnage &cible)
    {
        cible.recevoir_degats (50); 
         }
    Bon le problème est portant quand on passe au main
    main.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
     
    #include <iostream>
    #include <string>
    #include "personnage.h" // Ne pas oublier
    #include "arme.h"
    #include "guerrier.h"
     
    using namespace std;      
    int main()
    {
       Guerrier moi;//ça marche impeccablement
       Guerrier moi ("Un marteau bien lourd",50) ; //ça veut pas aller ...
     
     
      system("PAUSE");      
      return 0;
    }
    Comme sur les commentaires...
    Quand je veux creé un objet de type Guerrier avec des valeur optimisées , le compilateur Devc++ m'insulte poliment on me disant :
    no matching function for call to `Guerrier::Guerrier(const char[8], int)'
    Et j'y comprends rien , pourtant en héritage tout les attributs et les méthodes de la classe mère passe à la classe héritée

    J'espère que vous avez bien compris le problème que je risque ...je sollicite votre aide donc ..
    Merci

  2. #2
    Membre confirmé Avatar de Linu6
    Profil pro
    Inscrit en
    Août 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 227
    Par défaut
    Tu as implémenté où et comment le constructeur de ton guerrier?

    Ta class guerrier me semble inachevée il lui manque surtout le constructeur et le destructeur

    normalement dans ta class guerrier tu dois avoir quelque chose qui ressemble à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Guerrier(string nom_arme,int degats_arme):Personnage(nom_arme, degats_arme){}

    afin de faire comprendre au compilateur que les argument que reçoit ton guerrier doivent être passés au constructeur du Personnage.

    p.s
    A mon avis tu n'as pas lu ton cours jusqu'au bout non?

    vas relire la suite du cours et t'en sauras davantage.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    En C++, tu ne peux pas passer des paramètres au constructeur de la classe mère sans passer par le constructeur de la classe fille. La classe fille ne possède pas de constructeur par valeur, donc le compilateur ne comprend pas pourquoi tu passes des paramètres à l'instanciation de la classe Guerrier.

    Le premier cas marche car toute classe possède un contructeur par défaut.

    Bon courage pour ton apprentissage du C++, on est tous passés par ce genre d'erreur un jour

  4. #4
    Membre confirmé

    Inscrit en
    Mai 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 72
    Par défaut
    Citation Envoyé par Linu6 Voir le message

    vas relire la suite du cours et t'en sauras davantage.
    +1 t'avais raison ....je te remercie en tout cas ...

    Citation Envoyé par mazipha Voir le message
    Bon courage pour ton apprentissage du C++, on est tous passés par ce genre d'erreur un jour
    Tu me donnes plus d'envie à faire au tant d'erreurs qu'on peut
    Et merci pour la réponse

Discussions similaires

  1. [POO] Problème de classes et héritage
    Par Kabanon dans le forum Langage
    Réponses: 1
    Dernier message: 25/10/2007, 12h37
  2. Problème héritage et classes abstraites
    Par sebzinzin dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2007, 18h24
  3. Réponses: 10
    Dernier message: 20/09/2006, 17h04
  4. [POO] Problème héritage des classes PHP4
    Par zana74 dans le forum Langage
    Réponses: 2
    Dernier message: 15/08/2006, 16h00
  5. [POO]héritage du constructeur de la classe parente
    Par new_wave dans le forum Langage
    Réponses: 7
    Dernier message: 10/03/2006, 14h25

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