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 :

Problème pour inclure un même header dans deux classes


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Points : 89
    Points
    89
    Par défaut Problème pour inclure un même header dans deux classes
    Bonjour à tous,

    Question bête... Mais je n'ai pas vraiment trouvé de réponse, sauf peut-être les namespaces mais je n'en suis vraiment pas sur.

    Petite explication :

    J'ai 3 classes : ma classe principale (plugin.h + plugin.cpp), une classe de gestion des pipes (pipe.h + pipe.cpp) et une classe de log (log.h + log.cpp).

    Dans le fichier plugin.h, j'inclus dans l'ordre : log puis pipe.

    Je peux utiliser ma classe log dans ma classe plugin, mais je ne peux pas m'en servir dans ma classe pipe.

    Si j'inclus log dans pipe ET plugin, le build du code génère une erreur de redéfinition de classe (logique).

    Je cherche donc la façon "clean" de gérer ce genre de problème.
    Noob Inside

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    la première solution est l'utilisation systématique des gardes d'inclusion. Parfois ça ne suffit pas, mais c'est le minimum.

    En règle générale, il faut éviter, tant que faire se peut (ce n'est pas toujours possible), d'inclure des fichiers dans les en-têtes (fichiers .h).
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juin 2007
    Messages
    204
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2007
    Messages : 204
    Points : 89
    Points
    89
    Par défaut
    Salut r0d et merci pour ta réponse.
    Du coup, il est préférable d'inclure tous les fichiers nécessaires dans les .cpp plutôt que les .h?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    On favorisera les forward declaration dans les header et les include dans les cpp.
    On évitera aussi (ie interdira) les using namespace dans les header.

    Enfin un header devra toujours avoir un include guard!
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/06/2010, 15h47
  2. un même JPanel dans deux JFrame
    Par blaise_laporte dans le forum Agents de placement/Fenêtres
    Réponses: 15
    Dernier message: 20/04/2006, 16h20
  3. Problème pour inclure le .lib de Cximage
    Par nac dans le forum MFC
    Réponses: 2
    Dernier message: 30/03/2006, 16h22
  4. Réponses: 4
    Dernier message: 04/02/2006, 17h44
  5. problème xsl : inclure une donnée xml dans une balise html
    Par djodjo dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/01/2003, 09h24

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