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 !! :
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 //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) ; }
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); }; #endifBon le problème est portant quand on passe au main
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); }
main.cpp
Comme sur les commentaires...
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; }
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
Partager