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 :aie: ...
et l'un des problèmes qui me bloque totalement est à propos des constructeurs :bug: ...
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:
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:
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:
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:
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)' :aie:
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 :arf:
J'espère que vous avez bien compris le problème que je risque ...je sollicite votre aide donc ..
Merci