IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

include et include, const, etc. je tourne en boucle !


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    agh
    agh est déconnecté
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 51
    Par défaut include et include, const, etc. je tourne en boucle !
    Bonjour à tous,

    Je viens du Java et du C#, mais là je suis obligé de sévir en C++.
    Que de mal !

    Je passe des heures sur des bêtises.
    Bref, voilà mon problème :

    première classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include <QtGui>
     
    #include "GLien.h"
     
    class GLien ;
     
    namespace ihm
    {
     
    	class GFile : public QGraphicsItem
    	{
    		public:
    		    void toto (GLien*) ;
    	};
    }
    seconde classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <QtGui>
    #include "GFile.h"
     
    class GFile ;
     
    namespace ihm
    {
    	class GLien : public QGraphicsLineItem
    	{
    		public:
    			GLien (GFile* source, GFile* destination);
    		private:
    			GFile* _source ;
    			GFile* _destination ;
    	};
    }

    et dans GLien.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include "inc/GLien.h"
     
    namespace ihm
    {
    	GLien::GLien (GFile* source, GFile* destination)
    	{
    	    _source      = source ;
    	    _destination = destination ;
     
    	    _source->toto(this);
    	}
    }
    et là, patapouf, je me fais jeter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ihm/GLien.cpp: In constructor ‘ihm::GLien::GLien(ihm::GFile*, ihm::GFile*)’:
    ihm/GLien.cpp:31: error: no matching function for call to ‘ihm::GFile::toto(ihm::GLien* const)’
    ihm/inc/GFile.h:51: note: candidates are: void ihm::GFile::toto(GLien*)

    Voilà. J'ai fait exprès de mettre en "clair" les include et tout et tout, parce que je sens que le soucis vient de là.
    Pussiez vous m'aider ?

    Je vous remercie infiniment.

    Alexis

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Par défaut
    dans ton premier bout de code supprime
    #include "GLien.h", il ne sert à rien
    dans le deuxième bout tu as fais une déclaration anticipé
    class GFile ; c'est très bien mais l'incluse #include "GFile.h" ne sert pas.
    dans le troisième morceau rajoute l'include supprimé en deux:
    #include "GFile.h"

    ça devrai mieux aller.

  3. #3
    agh
    agh est déconnecté
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 51
    Par défaut
    Merci de votre réponse,

    mais ça marche pas mieux :'(

  4. #4
    agh
    agh est déconnecté
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 51
    Par défaut
    Je suis un imbécile
    Je suis un imbécile
    Je suis un imbécile
    ...
    x100



    Mes forward-declaration class GLien; et class GFile ;
    n'étaient pas dans le namespace...
    bravo bravo.

    Merci en tout cas de votre aide.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par défaut
    Salut

    Citation Envoyé par agh Voir le message
    Bonjour à tous, Je viens du Java et du C#, mais là je suis obligé de sévir en C++.
    dur dur

    En plus, tu t'attaques directement à un truc qu'on essaye d'éviter en C++, à savoir des inclusions mutuelles, le fameux truc qui fait galérer tous les débutants ^^.

    Syl_20 t'as donné de bons conseils, mais il faut aussi que tu mettes ta déclaration anticipée dans le namespace, car GLien et ihm::GLien représentent potentiellement deux classes différentes, or ta déclaration anticipée déclare bien GLien et pas ihm::GLien.


    Edit : ha bah t'as trouvé tout seul ! N'oublie pas de amrquer le sujet comme résolu

  6. #6
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Au passage, évite les variables préfixées par _. C'est réservé au standard.

    Bonne continuation !

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 318
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    Salut



    dur dur

    En plus, tu t'attaques directement à un truc qu'on essaye d'éviter en C++, à savoir des inclusions mutuelles, le fameux truc qui fait galérer tous les débutants ^^.

    Syl_20 t'as donné de bons conseils, mais il faut aussi que tu mettes ta déclaration anticipée dans le namespace, car GLien et ihm::GLien représentent potentiellement deux classes différentes, or ta déclaration anticipée déclare bien GLien et pas ihm::GLien.


    Edit : ha bah t'as trouvé tout seul ! N'oublie pas de amrquer le sujet comme résolu
    J'avais pas vu les déclarations anticipées étaient en dehors des namespace
    j'ai répondu trop vite

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Warning: include() [function.include]: Failed opening
    Par FotoXe33 dans le forum Langage
    Réponses: 2
    Dernier message: 12/07/2009, 18h49
  2. include de include
    Par fourchette dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2008, 19h14
  3. include qui include pas.
    Par chaps31 dans le forum Langage
    Réponses: 2
    Dernier message: 01/10/2008, 17h34
  4. Includes d'includes.. ?
    Par Elendill dans le forum Langage
    Réponses: 13
    Dernier message: 02/01/2007, 22h16
  5. include et included (?)
    Par fguigui dans le forum Langage
    Réponses: 2
    Dernier message: 19/05/2006, 15h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo