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 :

inclure un fichier d'entete invisible aux autres


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Points : 406
    Points
    406
    Par défaut inclure un fichier d'entete invisible aux autres
    Bonjour,

    Je voudrais savoir si c'est possible d'inclure par exemple <toto.h> dans la classe MaClasse.h sans que les autres fichiers qui vont utiliser MaClasse.h ne voient <toto.h>

    Car j'ai besoin de délcarer des variables privées dans MaClasse.h définies dans toto.h.

    merci

  2. #2
    Membre averti Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Points : 358
    Points
    358
    Par défaut
    Utilise des pointeurs, et des prédeclarations de classe ?

  3. #3
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Points : 410
    Points
    410
    Par défaut
    Salut,

    Ce que propose Kujara fonctionne.
    Tu peux aussi faire un proxy.

    La vrai question, c'est : pourquoi tu veux faire cela ?*

    Si c'est pour accélérer la compilation, tu retrouvera le détail des deux solution proposées ici

    Si c'est pour des raisons de compétition de code, alors je dirais que ta solution ne fait que masquer le problème sans le résoudre.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Points : 406
    Points
    406
    Par défaut
    Merci pour vos solutions

    Si je veux faire ça c'est juste que je trouve ça plus logique.

    Si les fichiers qui incluent MaClasse n'ont pas besoin des fonctions de toto.h alors il est inutile qu'ils l'incluent pour rien.

  5. #5
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par pasdeface Voir le message
    Car j'ai besoin de délcarer des variables privées dans MaClasse.h définies dans toto.h.
    Citation Envoyé par pasdeface Voir le message
    Si les fichiers qui incluent MaClasse n'ont pas besoin des fonctions de toto.h alors il est inutile qu'ils l'incluent pour rien.
    J'avoue que tu piques ma curiosité.
    Les deux choses suivantes sont incompatibles :
    - une variable membre de MaClasse est de type Toto,
    - il est inutile que MaClasse connaisse les fonctions de Toto

    Du coup, j'en déduis qu'il y a quelque chose que nous supposons et qui est faux. Et je me demande bien quoi.

    Si je devais sortir ma boule de cristal, je supposerais que tu as mélangé dans toto.h, à la fois des déclaration de classe et des fonctions globales, ce qui serait sans doute une erreur.

    Peux-tu nous en dire plus ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Points : 406
    Points
    406
    Par défaut
    Citation Envoyé par Feriaman Voir le message
    - il est inutile que MaClasse connaisse les fonctions de Toto
    Ce n'est pas ce que j'ai dis

    Mais : il est inutile que les fichiers qui incluent MaClasse connaissent les fonctions de toto.
    Car si toto est inclue dans MaClasse.h alors il sera également inclue dans tous les fichiers qui incluent MaClasse.h

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Si tu définit une donnée membre de toto.h dans ta classe MaClasse?h, tu est obligé de mettre le fichier en-tête.

    Code Toto.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class Toto
    {
    };

    Code MaClasse.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include "Toto.h"
    MyClasse
    {
    private:
      Toto toto;
    };

    si tu ne l'incorpore pas, alors le compilateur ne connais pas Toto, et tu aura une erreur de compilation.

    Code Solution : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class Toto;     // Déclaration à l'avance de classe
    class MaClasse
    {
    private:
    Toto* toto;   // Peut uniquement être un pointeur.
    };

    Code dans MaClasse.cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include "Toto.h"
     
    MaClasse::MaClasse ()
    {
      toto = new Toto;
    }

    C'est la seule manière pour ne pas incorporer Toto.h dans MaClasse
    Mais dans le fichier en-tête MaClasse, tu peut uniquement utiliser des pointeurs sur ta classe Toto, et tu peut pas appeler des fonctions membres inline de Toto.h, parce qu'à nouveau, la seule chose que le compilateur sais, c'est qu'il existe une classe Toto, qu'il ne connais pas encore, et donc tu peut uniquement avoir des pointeurs sur celle-ci, parce que les pointeurs ont tous une taille identique, donc le compilateur sais quel place prend un mémoire un pointeur

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Points : 406
    Points
    406
    Par défaut
    ok, merci

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

Discussions similaires

  1. Inclure mon fichier .h qui dépend d'autres
    Par dazwy dans le forum Débuter
    Réponses: 6
    Dernier message: 25/04/2012, 22h04
  2. [AC-2003] Nouveaux enregistrements invisibles aux autres ?
    Par marot_r dans le forum IHM
    Réponses: 4
    Dernier message: 18/02/2011, 18h09
  3. Inclure le contenu d'un fichier (x)HTML dans un autre
    Par IsmaX dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 03/01/2009, 16h30
  4. inclure un fichier dans un autre
    Par kespy13 dans le forum Caml
    Réponses: 5
    Dernier message: 18/11/2007, 17h44
  5. [XSLT] syntaxe inclure un fichier .xsl dans un autre ficher .xsl
    Par darkangel1208 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 02/10/2007, 16h26

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