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 :
comme si je n'avais pas déclaré B.h dans le fichier C.h ???
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
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
Partager