Je fais le cours sur les classes d'Open Classroom en vue d'un projet qui en nécessitera et donc en m'exerçant sur l'un des exemples j'ai un souci de redéfinition d'une de mes Class dans le fichier CPP et je ne sais pas comment le résoudre (je vous promets que j'ai cherché en ligne avant de venir ici).
Du coup je vous montre ce que j'ai fait :
Fichier .h :
#ifndef PERSONNAGE_H_INCLUDED
#define PERSONNAGE_H_INCLUDED
#include <string>
class Personnage {
private :
//Attributs (c'est comme les variables juste pour la classe, comme les structures)
int m_vie; //ajouter le "m_" pour distinguer variables et membres
int m_mana;
std::string m_nomArme;
int m_degatsArme;
// TOUS LES ATTRIBUTS D'UNE CLASSE DOIVENT ETRE ATTRIBUÉS PRIVATE
public :
//Méthodes
void recevoirDegats (int nbDegats);
void attaquer (Personnage &cible);
void boirePotionDeVie (int quantitePotion);
void changerArme (std::string nouvelleArme, int nouveauDegats);
bool resterVie (int m_vie);
};
#endif // PERSONNAGE_H_INCLUDED
Et le fichier .cpp
#include "Personnage.h"
#include <string>
using namespace std;
class Personnage {
private :
//Attributs (c'est comme les variables juste pour la classe, comme les structures)
int m_vie; //ajouter le "m_" pour distinguer variables et membres
int m_mana;
string m_nomArme;
int m_degatsArme;
// TOUS LES ATTRIBUTS D'UNE CLASSE DOIVENT ETRE ATTRIBUÉS PRIVATE
public :
//Méthodes
void Personnage::recevoirDegats (int nbDegats)
{
m_vie=m_vie-nbDegats;
}
void Personnage::attaquer (Personnage &cible)
{
cible.m_vie=cible.m_vie-m_degatsArme;
}
void Personnage::boirePotionDeVie (int quantitePotion)
{
m_vie=m_vie+quantitePotion;
}
void Personnage::changerArme (string nouvelleArme, int nouveauDegat)
{
m_nomArme=nouvelleArme;
m_degatsArme=nouveauDegat;
}
bool resterVie (int m_vie)
{
if (m_vie==0)
{
cout <<"Game over";
}
else true;
}
};
L'erreur que me sort le compilateur du coup est : "error redefinition of class Personnage (dans le cpp du coup)/ previous definition of class Personnage (et me renvoie à la déclaration dans le header du coup) et je vous avoue que je me trouve perdu face à une telle situation.
Merci beaucoup en attendant et j'espère apprendre de mes erreurs!
Oui c'est normal, grosso-modo dans un fichier .hpp on déclare la classe et dans un fichier .cpp on définit ses fonctions. Là dans ton fichier .cpp tu redéclares la classe... Donc forcément ça coince .
Aussi, n'utilise pas using namespace std; c'est une mauvaise pratique (voir ici pourquoi).
Autre chose, je dois t'annoncer une mauvaise nouvelle. Le cours d'OC est obsolète (c'est du très vieux C++) et il est rempli d'inepties. Je te conseille fortement de te pencher sur d'autres cours. Il y en 2 qui sortent du lot :
Le cours de @gbdivers-> ici (il est en cours d'écriture mais bien mieux que celui d'OC et à jour)
Le bouquin C++ Primer 5th Edition de S. Lippmann (en anglais mais complet)
Ah bah oui! Et merci encore pour les conseils sur les autres j'y jetterai un oeil!
Soucis de redéfinition dans le cpp file
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
...