Partage
  • Partager sur Facebook
  • Partager sur Twitter

Constructeur qui ne passe pas la compilation ? Oo

member initializer expression list treated as compound expression

Sujet résolu
    7 avril 2008 à 11:39:28

    Bonjour,

    J'ai commencé le C++ il n'y a pas longtemps. J'ai suivi le tuto de M@teo avec le RPG, mais en changeant les noms des classes, attributs, et rajoutant quelques options. Comme je suis fan de Pokémon, j'ai utilisé ça. ^^

    Bref, donc, malgré ça, j'ai une erreur de compilation avec le constructeur suivant :
    1. Pokemon::Pokemon(string nomAttaque, int degatsAttaque) : m_pv(100), m_pp(20), m_attaque(nomAttaque,degatsAttaque)
    2. {}


    Selon Dev-C++, qui m'indique : « member initializer expression list treated as compound expression ».

    Je vois absolument pas d'où ça peut venir. J'ai comparé le code de m@teo et le mien, et je ne vois pas vraiment de problème.


    J'ai aussi une autre erreur, « invalid conversion from `int' to `Attaque*' » je ne sais pas si c'est l'une qui entraîne l'autre. Et d'ailleurs, je n'arrive pas à trouver l'origine de la deuxième non plus. :(

    Enfin bon, voilà, ça fait une heure que je me casse la tête dessus, y a pire mais ça commence à m'énerver un peu.

    Merci d'avance pour votre aide. ^^

    Orcade
    • Partager sur Facebook
    • Partager sur Twitter
      7 avril 2008 à 12:53:14

      D'accord.

      1. #include <cstdlib>
      2. #include <iostream>
      3. #include <string>
      4. #include "Pokemon.h"
      5. using namespace std;
      6. Pokemon::Pokemon() : m_pv(100), m_pp(20)
      7. {}      
      8. Pokemon::Pokemon(string nomAttaque, int degatsAttaque) : m_pv(100), m_pp(20), m_attaque(nomAttaque,degatsAttaque)
      9. {}
      10. Pokemon::~Pokemon()
      11. {}
      12. void Pokemon::recevoirDegats (int nbrDegats)
      13. {
      14. m_pv -= nbrDegats;
      15. if (m_pv < 0)
      16. m_pv = 0;
      17. }
      18. void Pokemon::attaquer(Pokemon &cible)
      19. {
      20. cible.recevoirDegats(m_attaque->getDegats());
      21. }
      22. void Pokemon::boirePotion(int pvRestaures)
      23. {
      24. m_pv += pvRestaures;
      25. if (m_pv>100)
      26. m_pv=100;
      27. }
      28. bool Pokemon::estVivant()
      29. {
      30. if (m_pv>0)
      31. {return true;}
      32. else
      33. {return false;}
      34. }  
      35. int m_pv;
      36. int m_pp;
      37. string m_nomAttaque;
      38. int pouvoirAttaque;
      • Partager sur Facebook
      • Partager sur Twitter
        7 avril 2008 à 13:02:53

        les variables doivent-être mises en privé et dans ton *.h

        1. private :
        2. int m_pv, m_pp, pouvoirAttaque;
        3. std::string m_nomAttaque;
        • Partager sur Facebook
        • Partager sur Twitter
        :)
          7 avril 2008 à 13:07:26

          Ah, oui, merci de me le rappeler. ^^
          Bon cela dit, ça affiche toujours les erreurs.
          • Partager sur Facebook
          • Partager sur Twitter
            7 avril 2008 à 14:47:55

            un petit indice, ça vient de ta liste d'initialisation, pour être plus précis de :
            1. m_attaque(nomAttaque,degatsAttaque)

            je te laisse corriger par toi même.
            • Partager sur Facebook
            • Partager sur Twitter
              7 avril 2008 à 15:25:57

              J'ai changé en :
              1. Pokemon::Pokemon(string nomAttaque, int degatsAttaque) : m_pv(100), m_pp(20), m_nomAttaque(nomAttaque), m_degatsAttaque(degatsAttaque)
              2. {}


              Et ça marche avec les m_degatsAttaque et m_nomAttaque du .h. ^^
              Merci. =)
              • Partager sur Facebook
              • Partager sur Twitter

              Constructeur qui ne passe pas la compilation ? Oo

              × 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