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 :

conflit d'inclusions et Héritage de classe


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 120
    Points : 65
    Points
    65
    Par défaut conflit d'inclusions et Héritage de classe
    Voila le problème :
    On va dire que j'ai 4 fichiers headers :
    - Window.h
    - Menu.h
    - Item.h
    - ClickableItem.h
    Chacun d'eux commence par un #ifndef .... #endif pour protéger de la multi-inclusion de fichiers.

    Chaque en-tete définit une classe du meme nom que le fichier.
    De plus, la classe ClickableItem est une sous classe de Item.
    Et enfin,
    - Window.h inclut Menu.h
    - Menu.h inclut Window.h, Item.h et ClickableItem.h
    - Item.h inclut Menu.h
    - ClickableItem.h inclut Item.h

    Le problème est que pour certains de ces fichiers, j'ai du préciser au compilateur quelle classe il doit utiliser. Par exemple dans Window.h, j'ai du ecrire juste apres les include "class Window;". Mais comme ClickableItem hérite de Item, ecrire "class Item;" ne suffit pas, le compilo me sort qu'il a besoin que la classe de base soit défini. D'une part je le comprend, d'autre part je vois pas pk il ne trouve pas la définition de la classe de base malgrè le 'include "Item.h"'.

    Pour les rares élus qui ont tout compris à mon problème, je vous remercie d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 120
    Points : 65
    Points
    65
    Par défaut
    PS : Le premier qui me donne une bonne réponse aura droit à une sucette

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 120
    Points : 65
    Points
    65
    Par défaut
    petite précision:
    Comme je m'en doutais, lorsque je copie-colle le contenu de ClickableItem.h à la fin de Item.h, tout marche correctement. Mais je ne trouve pas ca beau. J'ai l'habitude d'écrire une seule classe par fichier Header

  4. #4
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    La réponse à ta question ne serait pas dans la FAQ des fois ?
    -> dépendances circulaires.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 120
    Points : 65
    Points
    65
    Par défaut
    je ne trouve pas. Pourtant j'ai parcouru des yeux toute la FAQ C++

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 120
    Points : 65
    Points
    65
    Par défaut
    Attention, je ne suis pas dans ce cas là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class A {
         public:
           B* foo();  // Erreur: Symbole inconnu 'B'
         };
     
    class B {
         public:
           A* bar();
         };
    si c'est à ce cas que tu penses Luc Hermitte

  7. #7
    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 : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Pourtant si, tes inclusions tournent dans tous les sens. Tu ne devrais pas avoir autant de cycles (en fait aucun), tu as sans doute un problème dans ta conception. Et sinon la réponse se trouve bien dans la FAQ (déclarations ancitipées).

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Points : 64
    Points
    64
    Par défaut
    Si j'ai bien compris ton problème, je dirais que tes gardes d'inclusion utilisent le même symbole.

Discussions similaires

  1. [POO] Problème héritage des classes PHP4
    Par zana74 dans le forum Langage
    Réponses: 2
    Dernier message: 15/08/2006, 16h00
  2. Héritage de classes.
    Par Berzerk_ dans le forum C++
    Réponses: 48
    Dernier message: 13/08/2006, 23h48
  3. [POO] Héritage vs classe dans une classe
    Par robichou dans le forum Langage
    Réponses: 4
    Dernier message: 06/08/2006, 23h51
  4. Conflit entre java.util.Date et class java.sql.Date
    Par vonitiana dans le forum Langage
    Réponses: 3
    Dernier message: 30/06/2006, 11h43
  5. [OO] Héritage - Mixins Classes
    Par djmalo dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 01/03/2005, 23h16

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