Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt]utilisation d'une classe dans une classe

Sujet résolu
    20 mars 2008 à 16:17:48

    bonjour a tous. J'ai suivi le tuto de matéo de C++ et après avoir créé des classes (Dictionnaire et Mot) qui marchent parfaitement bien sous console j'ai voulu créer une fenetre avec Qt. Je l'ai fait et estétiquement il n'y a aucun probleme. Maintenant comme l'a fait matéo dans le tuto où il a utilisé la classe Arme comme une des propriété de la fenetre j'ai voulu faire la même chose avec ma classe MaFenetre et les classes Mot et Dictionnaire. Quand j'instancie un objet de la classe Mot dans le fichier MAFenetre.cpp tout marche a merveille et le Mot.h je l'inclut dans MaFenetre.cpp. Maintenant quand j'ai essayé de créer une propriété mdico de la classe Mot dans le MaFenetre.h et en incluant Mot.h dans MeFenetre.h il ya eu plein d'erreur qu'il n'avait pas signalé avant. Svp si vous avez une idée sur le problème faites le moi savoir. merci.
    • Partager sur Facebook
    • Partager sur Twitter
      20 mars 2008 à 16:22:28

      Tes fichiers headers sont protégés des inclusions multiples? Sinon peut-être que le code aiderait. ;)
      • Partager sur Facebook
      • Partager sur Twitter
        20 mars 2008 à 16:43:05

        Oui tous mes headers sont protégés. Bon voila le code comme ca ce sera plus clair.
        1. //Dictionnaire.h
        2. #ifndef DEF_DICTIONNAIRE
        3. #define DEF_DICTIONNAIRE
        4. class Dictionnaire
        5. {
        6.     public:
        7.         Dictionnaire ();        
        8.         Dictionnaire(int num_categorie);
        9.         ~Dictionnaire();
        10.     void relever_nbr_mot();
        11.     std::string lire_mot();
        12.     private:
        13.     std::string m_categorie; // Pas de using namespace std, donc il faut mettre std:: devant string.
        14.     int m_nbr_mot;
        15. };
        16. #endif

        le code de MaFenetre.cpp est trop long mais en gros il nya aucun problème lorsque je met:
        1. #include "dictionnaire.h"

        dans MeFenetre.cpp et si j'instancie un objet de la classe Dictionnaire dans MaFenetre.cpp il nya aucun problème non plus. Par contre si je mets le include dans MaFenetre.h afin de créer une propriété de la classe MAFenetre de type Dictionnaire là il ya plein d'erreurs. MErci encore pour l'aide.
        NB:je mettrais volontiers les erreurs qui s'affichent mais ne sais pas comment ajouter une image :euh:
        • Partager sur Facebook
        • Partager sur Twitter
          20 mars 2008 à 16:59:53

          Attention "//Dictionnaire.h" et "#include "dictionnaire.h"", enfin je ne pense pas que l'erreur viennent de là.
          Vu que ton dictionnaire.h sera inclu dans MaFenetre.cpp, essaye "class Dictionnaire;" au début de MaFenetre.h sans faire l'include.
          Mis à part ça, je ne vois pas d'où ça pourrais venir, il faudrait voir les erreurs. o_O
          • Partager sur Facebook
          • Partager sur Twitter
            20 mars 2008 à 17:15:16

            j'ai effectivement fait ce que tu m'a conseillé de faire pour "class Dictionaire" dans MAFenetre.h et ça a marché. merci beaucoup.
            • Partager sur Facebook
            • Partager sur Twitter
              20 mars 2008 à 17:20:46

              Cool ;)
              C'est une technique que j'ai apprise en utilisant Qt :

              Citation : trolltech


              class QSlider;
              This is another classic trick, but one that's much less used often. Because we don't need QSlider in the interface of the class, only in the implementation, we use a forward declaration of the class in the header file and include the header file for QSlider in the .cpp file.

              This makes the compilation of big projects much faster, because the compiler usually spends most of its time parsing header files, not the actual source code. This trick alone can often speed up compilations by a factor of two or more.



              http://doc.trolltech.com/4.0/tutorial-t7.html
              • Partager sur Facebook
              • Partager sur Twitter

              [Qt]utilisation d'une classe dans une classe

              × 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