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 de la poule avant l'oeuf ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Par défaut Problème de la poule avant l'oeuf ?
    Bonjour,

    voilà ce que je fais :

    Dans "A.h" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #include "B.h"
     
    Class A
    {
         B b;
    };
    Dans "B.h" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #include "B.h"
     
    Class B
    {
         A a;
    };
    et voilà ce que me sort VC++6 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    error C2146: syntax error : missing ';' before identifier 'B'
    error C2501: ...
    Comment résoudre ce problème (c'est un classique, non?)

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 92
    Par défaut
    De mémoire il suffit que tu ajoutes devant la classe qui pose probleme une "pré-declaration".

    Si tu mets

    Juste avant de déclarer ta classe B il me semble que ca marche

  3. #3
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    http://c.developpez.com/faq/cpp/?pag...erence_croisee

    note : je crois que c'est plutôt le problème de l'oeuf avant la poule

  4. #4
    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
    Comme d'hab (c'est un problème qui revient souvent) : tu veux créer un B qui contient un A, qui lui-même contient un B, qui va à son tour contenir un A, qui va contenir un B, qui ...

    Impossible donc, rien qu'au niveau de la conception.

  5. #5
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Mais la poule elle y est bien arrivée elle

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Par défaut
    Vous allez rire mais j'obtiens ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error C2079: 'a' uses undefined class 'A'
    Et j'ai vraiment respecter la (courte) procédure à suivre...


    Ahlala, si au moins j'avais une poule sous la main ...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 34
    Par défaut
    Je sais que c'est totalement hors sujet (quoique, quand on lit le titre du post...), mais puisqu'on parle du problème de l'oeuf avant la poule (ou l'inverse), il y a un point essentiel auquel on ne pense jamais: pour qu'un oeuf devienne une poule, il faut forcément que cet oeuf ait été fécondé, donc en plus de la poule, il nous faut aussi la présence d'un coq...

    Mais il vient d'où, ce coq???

  8. #8
    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
    Citation Envoyé par norwy
    Vous allez rire mais j'obtiens ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error C2079: 'a' uses undefined class 'A'
    Et j'ai vraiment respecter la (courte) procédure à suivre...


    Ahlala, si au moins j'avais une poule sous la main ...
    T'as fait une déclaration anticipée, mais du coup t'as oublié d'inclure l'en-tête de A là où tu l'utilises (donc très certainement dans B.cpp).

    La déclaration anticipée ce n'est pas magique, ça ne suffit que tant qu'on n'utilise pas l'objet déclaré. Dès lors que le compilo doit connaître plus de détails, il faut inclure la définition complète de la classe.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Par défaut
    C'est bon, g compris, je n'avais effectivement pas suivi la procédure, c'est-à-dire que je n'avais pas utilisé de pointeur sur ma 2ème classe...

    MEA Culpa...

    Conclusion: Si l'oeuf avait un pointeur sur la poule, le problème est réglé...

  10. #10
    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
    Citation Envoyé par norwy
    Conclusion: Si l'oeuf avait un pointeur sur la poule, le problème est réglé...
    Belle conclusion

    A l'occase, pense aussi à cliquer sur

  11. #11
    jmv
    jmv est déconnecté
    Membre chevronné Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Par défaut
    Citation Envoyé par norwy
    Conclusion: Si l'oeuf avait un pointeur sur la poule, le problème est réglé...
    ha non, c'est la poule qui doit avoir un pointeur sur l'oeuf !
    ok, je sort...

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

Discussions similaires

  1. Problème saut de page avant sous rapport
    Par Squall6john dans le forum iReport
    Réponses: 6
    Dernier message: 20/10/2009, 13h45
  2. Réponses: 1
    Dernier message: 06/01/2009, 22h50
  3. Problème : Form3 s'ouvre avant qu'on lui demande
    Par chacarre dans le forum Débuter
    Réponses: 9
    Dernier message: 22/04/2008, 23h36
  4. Problème de mise en avant d'une forme
    Par vantoff dans le forum C++Builder
    Réponses: 3
    Dernier message: 03/08/2006, 04h00
  5. Problème d'utilisation select () avant recv sous windows
    Par init dans le forum Développement
    Réponses: 3
    Dernier message: 16/03/2005, 19h36

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