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:
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 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
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_*/
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 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_*/
Ce programme compile cependant si dans mon deuxième fichier je choisi de mettre la ligne #include "derived2.h" gcc me donne comme erreur :
../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