Bonjour,
J'ai des pb qd j'utilise les include au niveau des classes dérivées.
Dans un premier fichier.h je déclare la classe de base:
Dans un deuxième fichier la classe dérivée n°1:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #ifndef BASED_H_ #define BASED_H_ #include <iostream> template <typename T> class based{}; #endif /*BASED_H_*/
Dans un troisième fichier la classe dérivée n°2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #ifndef DERIVED1_H_ #define DERIVED1_H_ #include "based.h" //#include "derived2.h" class derived1 : public based<int>{ public: //friend derived2 g1(derived1){derived2 h;return h;}; }; #endif /*DERIVED1_H_*/
Ce programme compile cependant si dans mon deuxième fichier je choisi de mettre la ligne #include "derived2.h" gcc me donne comme erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #ifndef DERIVED2_H_ #define DERIVED2_H_ #include "based.h" #include "derived1.h" class derived2 : public based<int>{ public: friend derived1 g2(derived2){derived1 h;return h;}; }; #endif /*DERIVED2_H_*/
../derived2.h:11: error: ‘derived1’ does not name a type
Est-ce que cela provient d'une mauvaise gestion des fichiers d'entête?
Comment je peux faire pour éviter cette erreur?
Merci pour votre réponse
Partager