Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt]Déclaration de classes... multiples!

Liens entre classes

Sujet résolu
    20 juin 2008 à 20:38:57

    Bonjour à tous!
    Voilà un petit point qui me pose problème depuis un petit moment et pour pas mal de programmes en fait.
    Sans vous mettre le code source de l'un deux, je vous fais un petit exemple.

    Voici le header de ma première classe, qui utilise une sous-classe si je puis dire :
    #include "sousClasse.h"
    
    class Classe
    {
    	public : 
    		Classe();
    		~Classe; //Mince! altgr+3 ne veut pas faire le tild! J'ai du insérer le caracetre "à la main", mais bon, c'est un autre problème... ^_^'
    	
    	private : 
    		sousClasse *instance;
    };
    


    Voici le header de ma sous-classe qui contient un pointeur vers Classe :
    #include "Classe.h" //PROBLEME d'inclusion multiple, mais je déclare dans sousClasse un pointeur de type Classe
    
    class sousClasse
    {
    	public : 
    		sousClasse();
    		~sousClasse;
    	
    	private : 
    		Classe *pointeur_vers_classe;//Afin d'utiliser des slots de Classe par exemple
    };
    


    Alors, l'inclusion multiple semble obligée, mais c'est pas possible, enfin je sais vraiment pas comment faire!

    Comment lier deux classes entre elles, sachant que l'une utilise l'instance de l'autre...
    Serait-t-il possible de faire savoir autrement à sousClasse qu'il existe un type Classe?
    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      20 juin 2008 à 20:42:28

      Il ne faut pas fire la manie avec les #ifndef ?
      • Partager sur Facebook
      • Partager sur Twitter
        20 juin 2008 à 20:57:17

        En réalité, je met les #ifndef.
        Cependant, il manque des déclarations en faisant cela.
        Si je le fais pas, ça plante à la compilation, ça fait une inclusion multiple...

        PS : j'inclus Classe dans mon fichier main, donc CLASSE est défine à la première inclusion, je ne peux pas la réinclure dans sousClasse, qui voudrait de toutes manières inclure Classe à elle même une fois que sousClasse aurait été incluse dans Classe, ... C'est bon là? :D
        • Partager sur Facebook
        • Partager sur Twitter
          20 juin 2008 à 21:14:11

          recherche "déclarations anticipées"
          • Partager sur Facebook
          • Partager sur Twitter
            20 juin 2008 à 21:34:34

            Merci, c'est ce que j'avais essayé, mais ça ne fonctionne pas.
            Apparemment sousClasse n'est pas au courant que Classe contient le slot que j'utilise.
            connect(bouton, SIGNAL(clicked()), pointeur_vers_classe, SLOT(mon_slot()));
            

            Tout hérite de QWidget et la macro Q_OBJECT est bien présente... Et bouton est un attribut de sousClasse (QPushButton *bouton)
            Voici l'erreur à la compilation : (avec les vrais noms de mes classes ^^ )
            Copie.cpp:16: error: no matching function for call to `Copie::connect(QPushButto
            n*&, const char[11], Fenetre*&, const char[13])'


            Alors voilà ce que je lis en tapant "déclarations anticipées c++" sur google, première réponse :

            Citation : http://jlecomte.ifrance.com/c++/c++-faq-lite/misc-technical-issues-fr.html

            Rappelez vous ceci: quand vous utilisez une déclaration anticipée , vous pouvez simplement utiliser le symbole déclaré; vous ne pouvez rien faire qui requiert de la part du compilateur la connaissance de toute ou partie de la définition du symbole.



            Si je comprend bien, c'est la m****!
            Je vais continuer mes recherches.

            Edit :
            Je suis bête, le up n'est pas possible mais l'édition l'est!
            J'ai trouvé juste après avoir posté le dernier message

            L'avantage de la programmation modulaire...
            Pourquoi j'avais pas pensé à inclure sousClasse.h ET Classe.h dans sousClasse.cpp?
            Solution trouvée sur developpez.com.
            Très bien expliqué, clair, très bon site. De toutes manières il est dans mes favoris! :D

            Citation : Minirop

            déclarations anticipées


            Merci Minirop, je savais pas quoi taper dans la barre de recherche. ^^
            Au fait, c'est la balise [Qt] dans le titre qui t'as attiré? Si c'est le cas je vais tout le temps la mettre... :lol:
            • Partager sur Facebook
            • Partager sur Twitter

            [Qt]Déclaration de classes... multiples!

            × 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