Problème de compilation en dev c++
Fermé
axelandre
Messages postés
35
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
22 septembre 2010
-
25 nov. 2007 à 11:57
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 25 nov. 2007 à 16:29
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 25 nov. 2007 à 16:29
A voir également:
- Expected primary-expression before 'void'
- Telecharger dev c++ - Télécharger - Langages
- Massgrave dev - Accueil - Windows
- Dev home. - Télécharger - Développement
- Julia s'est fait pirater son compte sur un réseau social. son mot de passe de 8 caractères était facile à deviner à partir des informations que tout le monde peut consulter en ligne sur son profil public. vous devez trouver son mot de passe pour découvrir qui veut devenir l'ami de julia. - Forum Windows
7 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
25 nov. 2007 à 12:07
25 nov. 2007 à 12:07
Salut,
Tu as dû faire une erreur dans ton Personnage.h. Aurais-tu oublié par hasard de mettre un point-virgule à la fin de ta déclaration de classe ?
Cordialement
Tu as dû faire une erreur dans ton Personnage.h. Aurais-tu oublié par hasard de mettre un point-virgule à la fin de ta déclaration de classe ?
Cordialement
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
25 nov. 2007 à 12:24
25 nov. 2007 à 12:24
En effet, il y a une petite étourderie dans ton void
m_vie- = nbDegats; C'est m_vie -= nbDegats ou m_vie-=nbDegats. Mais jamais d'espace entre le - et le =, même remarque pour le +=.
De plus, pourrais-tu poster ton Personnage.h. Et s'il te plait, utilise le bouton Conservation de la mise en forme tu texte sélectionné (bouton à côté de Souligné). Sinon c'est illisible.
m_vie- = nbDegats; C'est m_vie -= nbDegats ou m_vie-=nbDegats. Mais jamais d'espace entre le - et le =, même remarque pour le +=.
De plus, pourrais-tu poster ton Personnage.h. Et s'il te plait, utilise le bouton Conservation de la mise en forme tu texte sélectionné (bouton à côté de Souligné). Sinon c'est illisible.
axelandre
Messages postés
35
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
22 septembre 2010
25 nov. 2007 à 12:36
25 nov. 2007 à 12:36
Effectivement, ca a résolu les problème!
merci beaucoup^et pardon pour mon message précédent quiétait illisible.
Mais encore un souci...hélas!
lorsque je compile le main.cpp, les erreurs suivantes apparaissent :
[Linker error] undefined reference to `Personnage::Personnage()'
[Linker error] undefined reference to `Personnage::Personnage(std::string, int)'
[Linker error] undefined reference to `Personnage::attaquer(Personnage&)'
[Linker error] undefined reference to `Personnage::boirePotionDeVie(int)'
[Linker error] undefined reference to `Personnage::attaquer(Personnage&)'
[Linker error] undefined reference to `Personnage::afficherEtat()'
[Linker error] undefined reference to `Personnage::afficherEtat()'
[Linker error] undefined reference to `Personnage::~Personnage()'
[Linker error] undefined reference to `Personnage::~Personnage()'
[Linker error] undefined reference to `Personnage::~Personnage()'
[Linker error] undefined reference to `Personnage::~Personnage()'
ld returned 1 exit status
idem lorsque je compile personnage.cpp :
[Linker error] undefined reference to `Arme::Arme()'
[Linker error] undefined reference to `Arme::Arme()'
[Linker error] undefined reference to `Arme::Arme(std::string, int)'
[Linker error] undefined reference to `Arme::Arme(std::string, int)'
[Linker error] undefined reference to `Arme::getDegats() const'
[Linker error] undefined reference to `Arme::changer(std::string, int)'
[Linker error] undefined reference to `Arme::afficher()'
[Linker error] undefined reference to `WinMain@16'
ld returned 1 exit status
idem pour Arme.cpp :
[Linker error] undefined reference to `WinMain@16'
ld returned 1 exit status
Faut-il que je te mette le code de chcun des fichiers concernés?
Merci beaucoup
merci beaucoup^et pardon pour mon message précédent quiétait illisible.
Mais encore un souci...hélas!
lorsque je compile le main.cpp, les erreurs suivantes apparaissent :
[Linker error] undefined reference to `Personnage::Personnage()'
[Linker error] undefined reference to `Personnage::Personnage(std::string, int)'
[Linker error] undefined reference to `Personnage::attaquer(Personnage&)'
[Linker error] undefined reference to `Personnage::boirePotionDeVie(int)'
[Linker error] undefined reference to `Personnage::attaquer(Personnage&)'
[Linker error] undefined reference to `Personnage::afficherEtat()'
[Linker error] undefined reference to `Personnage::afficherEtat()'
[Linker error] undefined reference to `Personnage::~Personnage()'
[Linker error] undefined reference to `Personnage::~Personnage()'
[Linker error] undefined reference to `Personnage::~Personnage()'
[Linker error] undefined reference to `Personnage::~Personnage()'
ld returned 1 exit status
idem lorsque je compile personnage.cpp :
[Linker error] undefined reference to `Arme::Arme()'
[Linker error] undefined reference to `Arme::Arme()'
[Linker error] undefined reference to `Arme::Arme(std::string, int)'
[Linker error] undefined reference to `Arme::Arme(std::string, int)'
[Linker error] undefined reference to `Arme::getDegats() const'
[Linker error] undefined reference to `Arme::changer(std::string, int)'
[Linker error] undefined reference to `Arme::afficher()'
[Linker error] undefined reference to `WinMain@16'
ld returned 1 exit status
idem pour Arme.cpp :
[Linker error] undefined reference to `WinMain@16'
ld returned 1 exit status
Faut-il que je te mette le code de chcun des fichiers concernés?
Merci beaucoup
axelandre
Messages postés
35
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
22 septembre 2010
25 nov. 2007 à 13:02
25 nov. 2007 à 13:02
Ha non, je n'ai pas créé la fonction WinMain.
En fait quand j'ai voulu faire ce programme, j'ai juste ouvert des fichiers source.
Donc voila mon fichier Personnage.h :
Merci
En fait quand j'ai voulu faire ce programme, j'ai juste ouvert des fichiers source.
Donc voila mon fichier Personnage.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
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
25 nov. 2007 à 12:54
25 nov. 2007 à 12:54
As-tu programmé la fonction WinMain() car visiblement tu as créé un projet de type Application Windows ? Et comme je t'ai dit, ça serait bien que tu postes ton Personnage.h, juste pour vérifier.
Et n'oublie pas le bouton magique.
Cdt
Et n'oublie pas le bouton magique.
Cdt
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 841
25 nov. 2007 à 16:29
25 nov. 2007 à 16:29
Serait-il possible d'avoir ton makefile ou la ligne de commande te permettant de compiler le tout.
Et n'oublie pas de faire la fonction WinMain() pour voir si l'erreur change ou pas.
Cdt
Et n'oublie pas de faire la fonction WinMain() pour voir si l'erreur change ou pas.
Cdt
axelandre
Messages postés
35
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
22 septembre 2010
25 nov. 2007 à 12:19
25 nov. 2007 à 12:19
Salut,
Alors bizzarement l'erreur n'est plus! je ne comprend pas pourquoi. Hier et ce matin ça la tout le temps fait et la comme par miracle, elle n'apparait plus.
En revanche trois autre problème surviennent.
Le premier concerne un void :
void Personnage::recevoirDegats(int nbDegats) //cela permet au compilateur de savoir que cette méthode se rapporte à la classe Personnage
{
m_vie- = nbDegats; //On enlève le nombre de dégats reçus à la vie du personnage
if(m_vie < 0) //Pour éviter d'avoir une vie négative
{
m_vie = 0; //On met la vie à 0, donc le personnage meurt
}
}
Le compilateur, ici, m'indique que m_vie- = nbDegats, "expected primary-expression before '=' token.
Deuxième erreur est la meme que celle du dessus mais au lieu de m_vie-, c'est m_vie+.
Et la troisième erreur se trouve dans un void aussi :
void Personnage::changerArme(string nouvelleArme, int degatsNouvelleArme)
{
m_arme.changer(nomNouvelleArme, degatsNouvelleArme); //appelle de la méthode changer de m_arme.Le Personnage répercute donc la demande de changement d'arme à la méthode changer de son objet m_arme
}
le compilateur m'indique " 'nomNouvelleArme' undeclared(first use this function". Alors que nomNouvelleArme est déclaré dans le fichier Personnage.h.
Ce meme fichier personnage.h est mis en include dans le fichier Personnage.cpp (fichier où est constaté l'erreur).
merci pour ton aide.
Alors bizzarement l'erreur n'est plus! je ne comprend pas pourquoi. Hier et ce matin ça la tout le temps fait et la comme par miracle, elle n'apparait plus.
En revanche trois autre problème surviennent.
Le premier concerne un void :
void Personnage::recevoirDegats(int nbDegats) //cela permet au compilateur de savoir que cette méthode se rapporte à la classe Personnage
{
m_vie- = nbDegats; //On enlève le nombre de dégats reçus à la vie du personnage
if(m_vie < 0) //Pour éviter d'avoir une vie négative
{
m_vie = 0; //On met la vie à 0, donc le personnage meurt
}
}
Le compilateur, ici, m'indique que m_vie- = nbDegats, "expected primary-expression before '=' token.
Deuxième erreur est la meme que celle du dessus mais au lieu de m_vie-, c'est m_vie+.
Et la troisième erreur se trouve dans un void aussi :
void Personnage::changerArme(string nouvelleArme, int degatsNouvelleArme)
{
m_arme.changer(nomNouvelleArme, degatsNouvelleArme); //appelle de la méthode changer de m_arme.Le Personnage répercute donc la demande de changement d'arme à la méthode changer de son objet m_arme
}
le compilateur m'indique " 'nomNouvelleArme' undeclared(first use this function". Alors que nomNouvelleArme est déclaré dans le fichier Personnage.h.
Ce meme fichier personnage.h est mis en include dans le fichier Personnage.cpp (fichier où est constaté l'erreur).
merci pour ton aide.