[C++] Erreur de compilation : méthodes ??
Fermé
azerty0
Messages postés
1274
Date d'inscription
samedi 27 octobre 2007
Statut
Membre
Dernière intervention
5 septembre 2013
-
5 févr. 2008 à 18:00
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 - 5 févr. 2008 à 23:35
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 - 5 févr. 2008 à 23:35
A voir également:
- [C++] Erreur de compilation : méthodes ??
- Erreur 0x80070643 - Guide
- Erreur 10016 epson - Forum Imprimante
- Erreur c2002 western union ✓ - Forum Vos droits sur internet
- Erreur g030 - Forum Bbox Bouygues
- Erreur 5000 france tv - Forum Lecteurs et supports vidéo
4 réponses
Mahmah
Messages postés
496
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
22 juin 2010
125
5 févr. 2008 à 20:08
5 févr. 2008 à 20:08
Salutations,
Il semblerait bien que le linker ne trouve pas le constructeur de ta classe, la raison la plus probable est qu'il ne soit pas codé.
basiquement on a donc
Déclaration:
Définition:
Cela correspond-t-il au ce que tu as à peu près ?
M.
Il semblerait bien que le linker ne trouve pas le constructeur de ta classe, la raison la plus probable est qu'il ne soit pas codé.
basiquement on a donc
Déclaration:
// 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.
azerty0
Messages postés
1274
Date d'inscription
samedi 27 octobre 2007
Statut
Membre
Dernière intervention
5 septembre 2013
75
5 févr. 2008 à 20:26
5 févr. 2008 à 20:26
Il me semble bien que oui.... =/
Enfin, je te laisse voir mais je n'y trouve pas d'erreur.
.cpp :
.h :
Enfin, je te laisse voir mais je n'y trouve pas d'erreur.
.cpp :
#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
Mahmah
Messages postés
496
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
22 juin 2010
125
5 févr. 2008 à 21:57
5 févr. 2008 à 21:57
Solutions numéro 2 et 2 bis
2)
Si c'est exactement un copier-coller alors le fichier cpp n'est pas compilé :
void Personnage::attaquer(int Personnage &cible) ferait une erreur. (et c'est la seule ^^)
et donc le main à beau connaître les fonctions déclarées dans le .h, au moment de rassembler effectivement le code, il tilte.
2) bis
Le code est compilé, génère un module (.o, .obj) mais celui-ci n'est pas linké avec les autres. (Et idem, le module du main tilte)
Accessoirement, j'aime beaucoup la p'tite convention de codage qui se dessine. (Etant un grand adepte de la notation hongroise)
Passer des strings par copie dans les paramètres j'aime moins.
M.
2)
Si c'est exactement un copier-coller alors le fichier cpp n'est pas compilé :
void Personnage::attaquer(int Personnage &cible) ferait une erreur. (et c'est la seule ^^)
et donc le main à beau connaître les fonctions déclarées dans le .h, au moment de rassembler effectivement le code, il tilte.
2) bis
Le code est compilé, génère un module (.o, .obj) mais celui-ci n'est pas linké avec les autres. (Et idem, le module du main tilte)
Accessoirement, j'aime beaucoup la p'tite convention de codage qui se dessine. (Etant un grand adepte de la notation hongroise)
Passer des strings par copie dans les paramètres j'aime moins.
M.
azerty0
Messages postés
1274
Date d'inscription
samedi 27 octobre 2007
Statut
Membre
Dernière intervention
5 septembre 2013
75
5 févr. 2008 à 23:35
5 févr. 2008 à 23:35
jvais voir ce que jpeux faire, merci :)