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 cyclique : problème


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Par défaut include cyclique : problème
    Bonjour,

    J'ai un fichier A.h qui à besoin de B.h et B.h à besoin de A.h.
    Le problème, c'est que les include font tout planter quand je les met dans les fichiers .h

    Vous aller me dire que c'est simple : il suffit de faire les include dans les .cpp, le problème c'est que je n'ait pas de .cpp étant donné que tout mon code se trouve dans les .h (template oblige)

    Que faire ?

  2. #2
    Membre du Club
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 11
    Par défaut
    Salut,

    il faut mettre des entetes a tes fichiers .h.
    Pour ton fichier A.h, tu mets ces deux lignes en entête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #ifndef AH
    #define AH
    et en toute fin de fichier tu mets
    Et pareil pour le fichier B.H en mettant BH au lieu de AH.
    Ca gère ce problème de d'inclusion dans une inclusion, dans un inclusion ...

    En espérant que ça règle ton problème.

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ca ne règlera pas grand chose, ce que tu décris ne résoud que les problèmes de définition multiple.

    Solution :
    http://c.developpez.com/faq/cpp/?pag...erence_croisee

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Par défaut
    En effet, ça ne résoud pas mon problème gér@rd lambert.

    Merci Laurent pour ce lien mais je le connais déjà et il me semble qu'il ne m'aide pas pour mon problème étant donné que la définition de mes méthodes se trouve dans les .h (template) et donc un simple "class B;" ne suffit pas !

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Dans ce cas la seule solution est de mettre les deux classes dans le même en-tête, de cette manière :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    template <typename> class B;
     
    template <typename T>
    class A
    {
        void Func(B<T>& b);
    };
     
    template <typename T>
    class B
    {
        void OtherFunc(A<T>& a);
    };
     
    template <typename T>
    void A<T>::Func(B<T>& b)
    {
       ...
    }
     
    template <typename T>
    void B<T>::OtherFunc(A<T>& a)
    {
       ...
    }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Par défaut
    Mouais, c'est pas cool
    Merci

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

Discussions similaires

  1. Problèmes de #include cycliques
    Par alpha35 dans le forum Débuter
    Réponses: 2
    Dernier message: 19/12/2009, 16h18
  2. Adieu les frames, bonjour les includes, mais.. problème !
    Par Phoenix0007 dans le forum Débuter
    Réponses: 1
    Dernier message: 06/12/2009, 20h02
  3. #include cyclique ?
    Par chwem dans le forum Débuter
    Réponses: 4
    Dernier message: 19/02/2009, 17h47
  4. [Include] Un problème d'imbriquation?
    Par Shadowm@n dans le forum C++
    Réponses: 4
    Dernier message: 14/06/2008, 18h26
  5. [Include][Subview]Problème de passage de paramètres
    Par kiki-le-vrai dans le forum JSF
    Réponses: 1
    Dernier message: 18/06/2007, 14h23

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