2 pièce(s) jointe(s)
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:
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:
1 2 3 4 5
| #if !defined(_A_H)
#define _A_H
class A {
};
#endif //_A_H |
Code:
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:
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:
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:
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 |