Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème pour transférer un objet

    16 novembre 2007 à 19:04:51

    Bonjour,

    J'améliore actuellement le mini RPG de Mateo pour le rendre interactif, j'éssaye de créer le plus de classes pour m'entrainer, quitte a arriver dans l'absurbe.

    Voila le "synopsis"

    Mon main va chercher le modèle action de la classe Personnage

    1. int main()
    2. {
    3.     Personnage david, goliath; // Création de 2 objets de type Personnage : david et goliath
    4.     while(david.getVie() > 0 || goliath.getVie() > 0)
    5.     {
    6.         david.action(goliath);
    7.         cout << endl;
    8.     }
    9.     return 0;
    10. }


    Après avoir demandé ce que l'utilisateur voulait faire, le modèle action va appeler le modèle analyse qui est présent dans une autre classe:

    1. void Personnage::action(Personnage &cible)
    2.     {
    3.         m_type = m_choix.choix();
    4.         AnalyseAttaque::Analyse(m_type, cible);
    5.         cout << cible.m_vie << endl;
    6.     }


    Analyse revient dans la classe Personnage pour appeler le modèle attaquer

    1. void Personnage::action(Personnage &cible)
    2.     {
    3.         m_type = m_choix.choix();
    4.         AnalyseAttaque::Analyse(m_type, cible);
    5.         cout << cible.m_vie << endl;
    6.     }


    1. void Personnage::attaquer(Personnage &cible)
    2.     {
    3.         cible.recevoirDegats(m_arme.getDegats());
    4.     }


    Et ca continue (quand je vous dit que ca part dans l'absurbe ... )

    J'ai néanmoins un problème pour envoyer à Analyse l'objet cible, qui n'est qu'en fait que goliath qui a été envoyé a action a partir du main, j'obtiens l'erreur ci dessous

    erreur: «Personnage" has not been declared


    Si j'ai bien compris, n'étant pas dans la classe Personnage, elle ne peut pas receuillir un attribut cible dans une classe Personnage?

    Mais alors comment receuillir cible pour ensuite le renvoyer a Attaquer ?

    • Partager sur Facebook
    • Partager sur Twitter
      16 novembre 2007 à 23:24:55

      D'après l'erreur que tu reçois, le compilateur ne trouve pas la déclaration de personnage. Tu as bien inclus le fichier contenant le prototype de la classe dans tous les fichiers où tu utilise Personnage?
      • Partager sur Facebook
      • Partager sur Twitter
        17 novembre 2007 à 7:35:16

        Oui, je viens de vériier
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          17 novembre 2007 à 10:38:45

          Il doit surement manquer un include qqpart. Regarde dans le header de AnalyseAttaque.
          • Partager sur Facebook
          • Partager sur Twitter
            17 novembre 2007 à 13:50:10

            C'est que je pensais mais je ne vois vraiment pas lequel ca pourrait être,

            #ifndef DEF_ANALYSE
            #define DEF_ANALYSE
            #include <iostream>
            #include <string>
            #include "personnage.h"

            Voila les includes.
            • Partager sur Facebook
            • Partager sur Twitter
              17 novembre 2007 à 14:05:44

              Attention #include "personnage.h" n'est pas pareil que #include "Personnage.h"

              Peut-être une majuscule d'oublier :p
              • Partager sur Facebook
              • Partager sur Twitter
                17 novembre 2007 à 14:29:09

                non, je n'ai pas mis de majuscules aux noms de fichier

                Est ce que vous voulez que je mette tout le code?
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  17 novembre 2007 à 18:07:36

                  Commence simplement par nous montrer le header de Personnage en premier.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 novembre 2007 à 18:58:22

                    1. #ifndef DEF_PERSONNAGE
                    2. #define DEF_PERSONNAGE
                    3. #include <string>
                    4. #include "arme.h"
                    5. #include "affichage.h"
                    6. #include "choix.h"
                    7. #include "analyseAttaque.h"
                    8. class Personnage
                    9. {
                    10.     public:
                    11.     Personnage();
                    12.     void recevoirDegats(int nbDegats);
                    13.     void attaquer(Personnage &cible);
                    14.     void boirePotionDeVie(int quantitePotion);
                    15.     void changerArme(std::string nomNouvelleArme, int degatsNouvelleArme);
                    16.     bool estVivant();
                    17.     void afficherEtat();
                    18.     void afficherAction();
                    19.     int getVie() const;
                    20.     void action(Personnage &cible);
                    21.     private:
                    22.     std::string m_nom;
                    23.     int m_vie;
                    24.     int m_mana;
                    25.     int m_type;
                    26.     Arme m_arme;
                    27.     Affichage m_affichage;
                    28.     Choix m_choix;
                    29. };
                    30. #endif



                    Voila la bête
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Problème pour transférer un objet

                    × 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.
                    • Editeur
                    • Markdown