Personnage.h #ifndef DEF_PERSONNAGE #define DEF_PERSONNAGE #include #include class Personnage { public: Personnage(); Personnage(std::string nom); void recevoirDegats(int degats); void coupDePoing(Personnage &cible) const; void sePresenter() const; protected: int m_vie; std::string m_nom; }; #endif Personnage.cpp #include "Personnage.h" #include #include using namespace std; Personnage::Personnage() : m_vie(100), m_nom("Jack") { } Personnage::Personnage(string nom) : m_vie(100), m_nom(nom) { } void Personnage::recevoirDegats(int degats) { m_vie -= degats; } void Personnage::coupDePoing(Personnage &cible) const { cible.recevoirDegats(10); } void Personnage::sePresenter() const { cout << "Bonjour mon nom est " << m_nom << "." << endl; cout << "J'ai " << m_vie << " points de vie." << endl; } int main() { Personnage Marcel; Marcel.sePresenter(); Guerrier lancelot("Lancelot du Lac") lancelot.sePresenter(); return 0; } Guerrier.h #ifndef DEF_GUERRIER #define DEF_GUERRIER #include #include #include "Personnage.h" class Guerrier : public Personnage { public: Guerrier(std::string nom); void FrapperFort(Personnage &cible) const; }; #endif Guerrier.cpp #include "Guerrier.h" #include #include using namespace std; Guerrier::Guerrier(string nom) : Personnage(nom) { } void Guerrier::FrapperFort(Personnage &cible) const { cible.recevoirDegats(20); } int main() { Personnage Marcel; Marcel.sePresenter(); //Guerrier Marcel("Lancelot du Lac"); return 0; } message d'erreur: /tmp/cczCYTXs.o: In function `Guerrier::Guerrier(std::__cxx11::basic_string, std::allocator >)': Guerrier.cpp:(.text+0x42): undefined reference to `Personnage::Personnage(std::__cxx11::basic_string, std::allocator >)' /tmp/cczCYTXs.o: In function `Guerrier::FrapperFort(Personnage&) const': Guerrier.cpp:(.text+0xa7): undefined reference to `Personnage::recevoirDegats(int)' /tmp/cczCYTXs.o: In function `main': Guerrier.cpp:(.text+0xce): undefined reference to `Personnage::Personnage()' Guerrier.cpp:(.text+0xda): undefined reference to `Personnage::sePresenter() const' collect2: error: ld returned 1 exit status