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 :

Classes ayant besoin l'une de l'autre et #include


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 53
    Points : 37
    Points
    37
    Par défaut Classes ayant besoin l'une de l'autre et #include
    Bonsoir,
    J'ai un petit souci de compilation...
    Mon problème peut être modélisé comme ça : J'ai une classe a contenu dans les fichier a.h et a.cpp et une classe b définie par b.h et b.cpp
    Dans a.h, j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include "b.h"
     
    #ifndef A_H
    #define A_H
    class a{
    ...
    };
    #endif
    et dans b.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include "a.h"
     
    #ifndef B_H
    #define B_H
    class b{
    ...
    };
    #endif
    Comment faire pour compiler ce genre de chose?
    Je précise au cas ou que j'ai bien chercher sur google, mais j'ai rien trouvé

    Merci d'avance.

  2. #2
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Question répondue plusieurs fois sur ce forums =)

    A.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #pragma once
    #include "B.h"
     
    class B;
    class A
    {
        B *b;
       ...
    };
    B.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #pragma once
    #include "A.h"
     
    class A;
    class B
    {
       A *a;
       ...
    };
    Attention à bien faire des pointeurs et non des objets 'réels' car sinon tu aurais une boucle de création d'objets infinie

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 53
    Points : 37
    Points
    37
    Par défaut Merci
    Je me doutais bien que la réponse devait être dans ce forum, mais je n'ai rien trouvé...

    Merci en tout cas, je passe en résolu

  4. #4
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    En passant, avant d'utiliser
    chercher pourquoi gcc l'a déprécié et vérifier que ces raisons ne sont pas applicables.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  5. #5
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    En passant, avant d'utiliser
    chercher pourquoi gcc l'a déprécié et vérifier que ces raisons ne sont pas applicables.
    Il n'est plus déprécié depuis la version 3.4 et gère maintenant correctement les liens (sym/hard).

    Citation Envoyé par http://gcc.gnu.org/gcc-3.4/changes.html
    File handling in the preprocessor has been rewritten. GCC no longer gets confused by symlinks and hardlinks, and now has a correct implementation of #import and #pragma once. These two directives have therefore been un-deprecated.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/02/2015, 10h38
  2. Réponses: 4
    Dernier message: 02/09/2008, 17h55
  3. Réponses: 6
    Dernier message: 11/12/2007, 17h55
  4. Réponses: 1
    Dernier message: 03/06/2006, 13h59
  5. 2 classes ayant besoin de l'un et l'autre
    Par JulienDuSud dans le forum C++
    Réponses: 4
    Dernier message: 17/03/2005, 07h49

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