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 :

Héritage d'une classe.


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Héritage d'une classe.
    Bonjours à tous et à toutes,
    Je suis nouveau sur le site, donc en cas d'erreur avec ce post, merci de me le faire savoir

    Pour en venir au problème, j'essaye de faire une classe qui hérite d'une autre classe.

    Classe Mère : Player
    Classe Fille : Tank

    player.h :

    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
    #ifndef PLAYER_H_INCLUDED
    #define PLAYER_H_INCLUDED
     
    #include <iostream>
    #include "arme.h"
     
    class Player
    {
    public:
        Player(int vie, int mana, std::string name, std::string a_name, int a_degats);
        ~Player();
     
        void afficher() const;
        void recevoirDegats(int degats);
        void attaquer(Player &cible);
     
        bool estVivant() const;
    private:
        int m_vie, m_mana;
        std::string m_name;
        bool m_vivant;
        Arme *m_arme;
    };
     
    #endif // PLAYER_H_INCLUDED
    player.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
    41
    #include <iostream>
    #include "player.h"
    #include "arme.h"
     
    using namespace std;
     
    Player::Player(int vie, int mana, std::string name, std::string a_name, int a_degats) : m_vie(vie), m_mana(mana), m_name(name)
    {
        m_arme = new Arme(a_name, a_degats);
    }
    Player::~Player()
    {
        delete m_arme;
    }
    void Player::afficher() const
    {
        cout << "Pseudo : " << m_name << endl;
        cout << "Vie : " << m_vie << endl;
        cout << "Mana : " << m_mana << endl;
        cout << "Arme : " << m_arme->getNameArme() << endl;
    }
     
    void Player::recevoirDegats(int degats)
    {
        m_vie -= degats;
        if(m_vie <= 0)
        {
            m_vie = 0;
            m_vivant = false;
        }
    }
     
    bool Player::estVivant() const
    {
        return m_vivant;
    }
     
    void Player::attaquer(Player &cible)
    {
        cible.recevoirDegats(m_arme->getDegats());
    }
    tank.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #ifndef TANK_H_INCLUDED
    #define TANK_H_INCLUDED
     
    #include "player.h"
    #include "arme.h"
     
    class Tank : public Player
    {
    public:
     
    };
     
    #endif // TANK_H_INCLUDED
    tank.cpp
    Bah voila le problème j'ai rien mis dedans, comme je veux que tank hérite tout de Player ^^

    Dans mon fichier main.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Player player(500, 100, pseudo, "Vieux couteau", 15);
    Tank tank(1000, 150, "ogre", "Marteau", 5);
    Et voici l'erreur généré par mon compilateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error: no matching function for call to 'Tank::Tank(int, int, const char [5], const char [8], int)'
    Merci d'avance de votre aide, je cherche de mon côté !

    PS: je ne suis pas un expert du c++, et je cherche juste à apprendre ^^

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Salut,

    erreur des plus explicites, il trouve pas le constructeur de Tank, vu... qu'il n'en existe pas.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci de ta réponse, mais normalement, je ne peut pas hérité le constructeur de player ?
    Sinon dans la construction du constructeur de Tank, je dois le faire comme celui de player ?

    Edit: Parce que moi, c'est le constructeur de player que je veux ^^

  4. #4
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    Tu appelles le constructeur de Player dans le constructeur de Tank (que tu auras déclaré au préalable...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Tank(int vie, int mana, std::string name, std::string a_name, int a_degats)
      : Player( vie, mana, name, a_name, a_degats )
    {
    }
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci, sa à marcher
    Je suis nouveau sur le forum et je peux déjà remarquer les réponses rapide et utile qui m'ont été donné merci Je passe en résolu :p

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

Discussions similaires

  1. Problème avec l'utilisation d'une classe
    Par yoshik dans le forum Général Python
    Réponses: 23
    Dernier message: 29/04/2011, 13h36
  2. Réponses: 4
    Dernier message: 27/10/2009, 11h14
  3. Réponses: 7
    Dernier message: 27/01/2009, 08h25
  4. [POO] Problème avec un require_once dans une classe
    Par Sayrus dans le forum Langage
    Réponses: 5
    Dernier message: 23/02/2008, 14h40
  5. [Système] Problème avec les méthodes d'une classe
    Par oussama127 dans le forum Langage
    Réponses: 7
    Dernier message: 30/08/2006, 09h18

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