Bonjour,

J'ai toujours utilisé les fichiers .h pour déclarer mes classes C++ et les fichiers .cpp pour le code source. Pour les classes qui utilisent les templates et les méthodes inlines: où faut-il mettre le code source ? :
- Dans les fichiers .cpp: ça ne fonctionne pas
- Dans les fichiers .h: on n'y met que de la déclaration, pas du code source

J'ai parfois vu ceci:
classA.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef CLASS_A_H
#define CLASS_A_H
 
#include <vector>
//ici, tous les autres include
 
template<class T> class classA
{
public:
  classA();
};
 
#include "classA.inl"
 
#endif
classA.inl:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
template<class T> inline classA<T>::classA()
{
  //du code source ici
}
Ca fonctionne bien et ça me semble assez logique.

Mon problème:
J'ai deux classes: A et B qui sont toutes les deux des templates. La classe A à besoin de la class B, j'ajoute donc un '#include "B.h"' dans le fichier 'A.h'.
Jusque là pas problème. Maintenant imaginons que la classe B à aussi besoin de la classe A: je ne peux pas ajouter un '#include "A.h"' (include cyclique).

Comment faire ?
Info: la solution proposé ici ne fonctionne pas pour la classe template/inline: http://cpp.developpez.com/faq/cpp/?p...erence_croisee

Merci d'avance