Partage
  • Partager sur Facebook
  • Partager sur Twitter

[QT]probleme de return

dans une fonction int

Sujet résolu
    31 mars 2008 à 19:31:53

    bonjour a tous , j'ai un code sous qt et 'jai une fonction qui bloque systématiquement a la compilation , j'ai crée un accesseur get.Nom() qui renvoit le nom du joueur pour qu'il soit utilisé ensuite mais ca ne marche pas !!! il semble avoir un probleme de int ou de char , mais j'ai essayer en créant une fonction d'acceur char mais ca ne amrche pas !!!

    main.c :

    1. /*
    2. main.cpp
    3. */
    4. #include <QApplication>
    5. #include <QWidget>
    6. #include "MaFenetre.h"
    7. #include "Personnage.h"
    8. int main(int argc, char *argv[])
    9. {
    10.     QApplication app(argc, argv);
    11.     Personnage joueur;
    12.     QString nom = "jack";
    13.     joueur.changerNom(nom);
    14.     MaFenetre fenetre(joueur.getVie(), joueur.getNom());
    15.     fenetre.afficher();
    16.     fenetre.show();
    17.     return app.exec();
    18. }

    un bout de personnage.cpp
    1. int Personnage::getNom() const
    2. {
    3. return m_nom;
    4. }


    et personnage.h :

    1. /* Personnage.h
    2. header de Personnage.cpp
    3. */
    4. #ifndef DEF_PERSONNAGE
    5. #define DEF_PERSONNAGE
    6. class Personnage
    7. {
    8.     public:
    9.     Personnage();
    10.     int getVie() const ;
    11.     int getNom()  const;
    12.     int changerNom(QString nomPersonnage);
    13.     private :
    14.     int m_vie;
    15.     QString m_nom;
    16. };
    17. #endif


    merci d'avance!
    • Partager sur Facebook
    • Partager sur Twitter
      31 mars 2008 à 19:39:12

      il faut que ta fonction retour un QString
      • Partager sur Facebook
      • Partager sur Twitter
        31 mars 2008 à 19:50:28

        Comme l'as dit Chlab_lak c'est ta valeur de retour qui est erronnée, tout comme changerNom qui retourne un int alors qu'il devrait retourné void ou à la rigeur un bool (pour savoir si le changement à réussi). ;)
        • Partager sur Facebook
        • Partager sur Twitter
          31 mars 2008 à 21:54:36

          et comment je fait pour retourner un qstring?
          • Partager sur Facebook
          • Partager sur Twitter
            31 mars 2008 à 22:21:42

            Ta fonction doit s'appeler :
            1. QString Personnage::getNom() const
            • Partager sur Facebook
            • Partager sur Twitter
              1 avril 2008 à 17:36:01

              quand je fait comme tu dis :
              1. /* Personnage.h
              2. header de Personnage.cpp
              3. */
              4. #ifndef DEF_PERSONNAGE
              5. #define DEF_PERSONNAGE
              6. class Personnage
              7. {
              8.     public:
              9.     Personnage();
              10.     int getVie() const ;
              11.     QString getNom() const ;
              12.     int changerNom(QString nomPersonnage);
              13.     private :
              14.     int m_vie;
              15.     QString m_nom;
              16. };
              17. #endif


              1. QString Personnage::getNom() const
              2. {
              3. return m_nom;
              4. }


              il m'indique une multitude d'erreurs !!! comme quoi QString " does not a name of a type " ah j'aurais bien aimé qu'il me dise poisson d'avril !! :)
              voila si tu vois d'ou ca vient !
              salut !

              • Partager sur Facebook
              • Partager sur Twitter
                1 avril 2008 à 18:05:38

                J'aurais dit que ça vient d'un mauvais include mais si tu n'as pas d'erreur pour "QString m_nom" mais seulement pour "QString getNom()"... o_O
                • Partager sur Facebook
                • Partager sur Twitter
                  1 avril 2008 à 18:49:33

                  en effet...
                  c'est etrange !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 avril 2008 à 21:29:04

                    essaye quand même avec le include. Des fois tu règles un ou deux trucs et il te redonne 3 erreurs
                    • Partager sur Facebook
                    • Partager sur Twitter
                      2 avril 2008 à 11:13:57

                      snif ! tout marche ! j'avais oublier un bete include !!! etonnant qu'il ne l'ai pas fait remarquer pour m_nom !! merci a tous !!

                      edit : maintenant j'ai essayer de mettre le :

                      1. strVie.setNum(vie);
                      2. strNom = nom;


                      dans la methode afficher plutot que le constrocteur , mais ca ne compile pas je vous met le code :
                      1. /* MaFenetre.cpp
                      2. fonctions de La classe MaFenetre
                      3. */
                      4. #include <QApplication>
                      5. #include <QWidget>
                      6. #include "MaFenetre.h"
                      7. MaFenetre::MaFenetre() : QWidget()
                      8. {
                      9.     setFixedSize(300, 300);
                      10.     strVie.setNum(100);
                      11.     strNom = "vous";
                      12. }
                      13. void MaFenetre::afficher(int vie , QString nom)
                      14. {
                      15.  strVie.setNum(vie);
                      16.  strNom = nom;
                      17.  m_boutonNom = new QPushButton(strNom , this);
                      18.  m_boutonVie = new QPushButton(strVie , this);
                      19.  m_boutonVie->move(0,20);
                      20.  m_boutonNom->show();
                      21.  m_boutonVie->show();
                      22. }


                      1. /* MaFenetre.h
                      2. prototype des fonctions de MaFenetre
                      3. */
                      4. #ifndef DEF_MAFENETRE
                      5. #define DEF_MAFENETRE
                      6. #include <QApplication>
                      7. #include <QWidget>
                      8. #include <QPushButton>
                      9. #include "Personnage.h"
                      10. class MaFenetre : public QWidget // On hérite de QWidget (IMPORTANT)
                      11. {
                      12.     public:
                      13.     MaFenetre();
                      14.     void afficher(int vie , QString nom);
                      15.     private:
                      16.     QPushButton *m_boutonNom;
                      17.     QPushButton *m_boutonVie;
                      18.     QString strVie;
                      19.     QString strNom;
                      20. };
                      21. #endif


                      1. /*
                      2. main.cpp
                      3. */
                      4. #include <QApplication>
                      5. #include <QWidget>
                      6. #include "MaFenetre.h"
                      7. #include "Personnage.h"
                      8. int main(int argc, char *argv[])
                      9. {
                      10.     QApplication app(argc, argv);
                      11.     Personnage joueur;
                      12.     QString nom = "jack";
                      13.     joueur.changerNom(nom);
                      14.     MaFenetre fenetre();
                      15.     fenetre.afficher(joueur.getVie() , joueur.getNom());
                      16.     fenetre.show();
                      17.     return app.exec();
                      18. }

                      voila , le compilateur m'indique que la requete "afficher" ne fait pas partie de la classe ma fenetre ... pourtant j'au juste fait 3 betes copiés collés !!
                      j'ai chercher un certain temps mais la ... je trouve vraiment pas !
                      merci pour ceux qui peuvent (encore) m'aider!
                      salut !
                      • Partager sur Facebook
                      • Partager sur Twitter
                        2 avril 2008 à 14:29:42

                        Citation : lefouleo

                        etonnant qu'il ne l'ai pas fait remarquer pour m_nom !! merci a tous !!



                        C'est ce que je t'ai dis ;). Des fois, quand tu corriges une erreur, il peut t'en rafficher une par la suite. Donc la, je ne sais pour quelle raison, il ne pouvait te générer le rapport d'erreur.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          2 avril 2008 à 15:22:16

                          ok merci , et aucune idée pour mon dernier probleme en date?(le dernier j'espere!)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            3 avril 2008 à 20:40:24

                            "MaFenetre fenetre();" enlève les paranthèses
                            • Partager sur Facebook
                            • Partager sur Twitter
                              4 avril 2008 à 17:44:47

                              ok ca marche , merci beaucoup
                              • Partager sur Facebook
                              • Partager sur Twitter

                              [QT]probleme de return

                              × 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