|
|
|
|
Bonjour à tous,
je viens d'apprendre à créer des classes selon les méthodes du site du zéro, et le compilateur m'affiche ces erreurs :
C:\DOCUME~1\Quentin\LOCALS~1\Temp\ccI3baaa.o(.text+0x176) In function `main': [Linker error] undefined reference to `Personnage::Personnage()'
Configuration: Windows XP Firefox 2.0.0.11
Salutations,
// maClasse.h
#ifndef _MA_CLASSE_H
#define _MA_CLASSE_H
class MaClasse
{
public:
MaClasse();
virtual ~MaClasse();
void uneMethode();
private:
int m_iUnEntier;
};
#endif//_MA_CLASSE_H
Définition:
// maClasse.cpp
#include "maClasse.h"
MaClasse::MaClasse()
{
m_iUnEntier = 27;
}
MaClasse::~MaClasse()
{
}
void MaClasse::uneMethode()
{
return;
}
Cela correspond-t-il au ce que tu as à peu près ? M. |
Il me semble bien que oui.... =/
#include <string>
#include "Personnage.h"
using namespace std;
Personnage::Personnage()
{
m_vie = 100;
m_mana = 100;
}
Personnage::Personnage(string nomArme, int degatsArme)
{
m_vie = 50;
m_mana = 50;
m_arme(nomArme, degatsArme);
}
Personnage::~Personnage();
{
}
void Personnage::recevoirDegats(int nbDegats)
{
m_vie -= nbDegats;
if(m_vie<0) m_vie=0;
}
void Personnage::attaquer(int 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()
{
if (m_vie > 0)return true; // VRAI, il est vivant !
else return false; // FAUX, il n'est plus vivant !
}
void Personnage::afficherEtat()
{
cout << "Vie : " << m_vie << endl;
cout << "Mana : " << m_mana << endl;
m_arme.afficher();
}
.h : #ifndef DEF_PERSONNAGE
#define DEF_PERSONNAGE
#include "Arme.h"
class Personnage
{
public:
Personnage();
Personnage(std::string nomArme, int degatsArme);
~Personnage();
void recevoirDegats(int nbDegats);
void attaquer(Personnage &cible);
void boirePotionDeVie(int quantitePotion);
void changerArme(std::string nomNouvelleArme, int degatsNouvelleArme);
bool estVivant();
void afficherEtat();
private:
int m_vie;
int m_mana;
Arme m_arme;
};
#endif
|
Solutions numéro 2 et 2 bis
|