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 débutant pour l'agregation


Sujet :

C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Par défaut Problème de débutant pour l'agregation
    Bonjour, c'est la première fois que je post, alors je vais essayé d'être clair mais ça pas être facile.
    Voila en faite j'ai 5 classes A, B, C ,D ,E
    ref: UML.jpg en fichier joins
    A agreg B
    B agreg D ou E
    D et E dérive de C

    La classe B possède une méthode qui return un type C* (donc un objet D ou E si ma logique et bonne)
    Encore un petit truc je souhaite avoir la référence de la classe instanciatrice dans la classe instanciée. (j'ai déjà fais ça en JAVA et je n'avais pas eu de problème...)

    Bref voila l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    In file included from B.h:17,
                     from E.h:16,
                     from E.cpp:13:
    C.h:20: erreur: ISO C++ forbids declaration of «B» with no type
    C.h:20: erreur: expected «;» before «*» token
    comme si je n'avais pas déclaré B.h dans le fichier C.h ???
    J'ai beau mettre en commentaire le #include B.h dans C.h l'erreur ne change pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #if !defined(_A_H)
    #define _A_H
    class A {
    };
    #endif  //_A_H
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #if !defined(_B_H)
    #define _B_H
    #include "A.h"
    #include "C.h"
    class B {
    public:
    	A* PtrClassA;
    	B(A* PtrClassA);
    	C* Operation();         
    };
    #endif  //_B_H
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #if !defined(_C_H)
    #define _C_H
    #include "B.h"
    class C {
    public:
    	B* PtrClassB;                  // l'erreur est ici: il  connaît pas B ??? pourquoi?
    };
    #endif  //_C_H
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #if !defined(_D_H)
    #define _D_H
    #include "C.h"
    class D : public C {
    public:
    	D(B* PtrClassB);
    };
    #endif  //_D_H
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #if !defined(_E_H)
    #define _E_H
    #include "B.h"
    #include "C.h"
    class E : public C {
    public:
    	E(B* PtrClassB);
    };
    #endif  //_E_H
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. problème de débutant pour tester un projet!
    Par yacinebenz dans le forum Android
    Réponses: 3
    Dernier message: 10/07/2013, 10h13
  2. problème de déclaration pour débutant !
    Par keviin dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/02/2009, 23h11
  3. Réponses: 1
    Dernier message: 22/01/2009, 11h23
  4. Réponses: 4
    Dernier message: 10/09/2007, 19h23
  5. problème de syntaxe pour un débutant
    Par marsamandes dans le forum Langage
    Réponses: 3
    Dernier message: 02/05/2007, 13h25

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