IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

inclusion multiple de class


Sujet :

C++

  1. #1
    Débutant
    Homme Profil pro
    aucun
    Inscrit en
    Avril 2012
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2012
    Messages : 152
    Points : 28
    Points
    28
    Par défaut inclusion multiple de class
    A chaque fois que j'essaie mon code, visual basic me dit que : error C2011: 'Monstre'*: redéfinition du type 'class'. Je ne sais pas pourquoi.

    Monstre.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Monstre
    {
    private:
    	std::string nom;
    	int hp;
    	int level;
    	int force;
    	int rapidite;
    	int defense;
    	bool estVivant;
     
    public:
    	int getDefense() const;
    };
    Raider:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #include "Monstre.h"
     
    class Raider
    {
    private:
    	std::string nom;
    	int hp;
    	int sp;
    	int xp;
    	int level;
    	int argent;
    	std::string classe;
    	int force;
    	int rapidite;
    	int defense;
    	std::string armure;
    	std::string Arme;
    	bool estVivant;
     
    public:
    	void seSoigner(int &hp);
    	void seRecuperer(int &sp);
    	void attaquer(Monstre &cible, int &force, int &defense);
    };
    body.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #include <iostream>
    #include <string>
    #include "raider.h"
    #include "Monstre.h"
     
    void Raider::seSoigner(int &hp)
    {
    	hp += 15;
    }
     
    void Raider::seRecuperer(int &sp)
    {
    	sp += 15;
    }
    int Monstre::getDefense() const
    {
     return defense;
    }
     
    void Raider::attaquer(Monstre &cible, int &force, int &defense)
    {
    	int x = cible.getDefense();
    	int dommage = x/force;
    }
     
    int main()
    {}

  2. #2
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Tu n'as pas protégé ton fichier d'entête Monstre.h.
    Comme il y a 2 #include "Monstre.h", le compilateur voit deux déclarations.
    FAQ C++ - Comment structurer ma classe en un fichier .h et un fichier .cpp ?

  3. #3
    Débutant
    Homme Profil pro
    aucun
    Inscrit en
    Avril 2012
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2012
    Messages : 152
    Points : 28
    Points
    28
    Par défaut
    Merci

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Elles me paraissent bizarre, tes fonctions: Pourquoi prendre en paramètre par référence une valeur qui est déjà dans la classe?

    Pourquoi ne pas faire ceci:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void Raider::seSoigner()
    {
    	hp += 15; //equivalent à this->hp += 15;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Inclusion multiple etc
    Par GO dans le forum C++
    Réponses: 6
    Dernier message: 27/09/2006, 15h37
  2. [Headers] Inclusion multiple
    Par vinzzzz dans le forum C
    Réponses: 2
    Dernier message: 14/02/2006, 18h03
  3. inclusions multiples c++
    Par persam dans le forum C++
    Réponses: 2
    Dernier message: 30/11/2005, 14h09
  4. [POO] Problème inclusion dans une classe
    Par LordBob dans le forum Langage
    Réponses: 11
    Dernier message: 22/11/2005, 15h21
  5. Problème d'inclusions multiples
    Par Le Furet dans le forum C
    Réponses: 2
    Dernier message: 03/10/2005, 23h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo