Bug : Méthode
Résolu
TheYoungGeek43
Messages postés
112
Statut
Membre
-
TheYoungGeek43 Messages postés 112 Statut Membre -
TheYoungGeek43 Messages postés 112 Statut Membre -
Bonjour,
Je regarde le site du zero pour apprendre le C++ et dans leur cours il apprenne a faire les classe les méthode ect... et moi j'ai un bug
Main.cpp
Personnage.cpp
Personnage.h
Arme.cpp
Arme.h
Mon compilateur me dit que dans le main la ligne 19 qui est "goliath.changerArme("Double hache tranchante vénéneuse de la mort", 40);" ne devrait pas avoir 2 argument et je ne comprend pas pourquoi il me dit ça
Merci de vos réponses
Je regarde le site du zero pour apprendre le C++ et dans leur cours il apprenne a faire les classe les méthode ect... et moi j'ai un bug
Main.cpp
#include <iostream> #include <string> #include "Personnage.h" #include "Arme.h" using namespace std; int main() { // Création des personnages Personnage david, goliath("Epée aiguisée", 20); // Au combat ! goliath.attaquer(david); david.boirePotionDeVie(20); goliath.attaquer(david); david.attaquer(goliath); goliath.changerArme("Double hache tranchante vénéneuse de la mort", 40); goliath.attaquer(david); // Temps mort ! Voyons voir la vie de chacun... cout << "David" << endl; david.afficherEtat(); cout << endl << "Goliath" << endl; goliath.afficherEtat(); system("PAUSE"); return 0; }
Personnage.cpp
#include <string> #include <iostream> #include "Personnage.h" using namespace std; Personnage::Personnage():m_vie(100), m_mana(100) {} Personnage::Personnage(string nomArme, int degatsArme) :m_vie(100), m_mana(100), m_arme(nomArme,degatsArme) {} Personnage::Personnage(int vie, int mana):m_vie(100), m_mana(100) {} void Personnage::recevoirDegats(int nbDegats) { m_vie -= nbDegats; if (m_vie < 0) { m_vie = 0; } } void Personnage::attaquer(Personnage &cible) { cible.recevoirDegats(m_arme.getDegats()); } void Personnage::boirePotionDeVie(int quantitePotion) { m_vie += quantitePotion; if (m_vie > 100) { m_vie = 100; } } void Personnage::changerArme(string nomNouvelleArme, int degatsNouvelleArme) { m_arme.changer(nomNouvelleArme, degatsNouvelleArme); } bool Personnage::estVivant() const { if (m_vie > 0) { return true; } else { return false; } } void Personnage::afficherEtat() const { cout << "Vie : " << m_vie << endl; cout << "Mana : " << m_mana << endl; m_arme.affiche(); } Personnage::~Personnage() { }
Personnage.h
#ifndef DEF_PERSONNAGE #define DEF_PERSONNAGE #include <string> #include "Arme.h" class Personnage { public: Personnage(std::string nomArme, int degatsArme); // Constructeur Personnage(); Personnage(int vie, int mana); void recevoirDegats(int nbDegats); void attaquer(Personnage &cible); void boirePotionDeVie(int quantitePotion); void changerArme(string nomNouvelleArme, int degatsNouvelleArme); bool estVivant() const; void afficherEtat() const; ~Personnage(); private: int m_vie; int m_mana; Arme m_arme; }; #endif // !DEF_PERSONNAGE
Arme.cpp
#include "Arme.h" #include <string> #include <iostream> using namespace std; Arme::Arme():m_nom("Epée rouillée"), m_degats(10) {} Arme::Arme(string nom, int degats):m_nom(nom), m_degats(degats) {} void Arme::changer(string nom, int degats) { m_nom = nom; m_degats = degats; } void Arme::afficher() { cout << "Arme : " << m_nom << " (Dégâts : " << m_degats << ")" << endl; } int Arme::getDegats() const { return m_degats; }
Arme.h
#ifndef DEF_ARME #define DEF_ARME #include <iostream> #include <string> class Arme { public: Arme(); Arme(std::string nom, int degats); void changer(std::string nom, int degats); void afficher(); int getDegats() const; private: std::string m_nom; int m_degats; }; #endif // !DEF_ARME
Mon compilateur me dit que dans le main la ligne 19 qui est "goliath.changerArme("Double hache tranchante vénéneuse de la mort", 40);" ne devrait pas avoir 2 argument et je ne comprend pas pourquoi il me dit ça
Merci de vos réponses
J'ai mis les même include dans toute mes classe
Mon compilateur me dit
donc ça fait bug tous mon programme (les cout, les string, les endl ect...)