Bonjour à tous,
le titre du post n'est pas très bien formulé mais je vais essayer de bien expliquer mon problème, que d'autres ont déjà eu mais pour lesquels je n'ai pas bien saisi la solution.
Je dispose d'une classe A qui contient une liste de pointeurs de classe B, classes templatées. De plus, la classe B contient elle aussi une liste de pointeurs de classe A. J'ai essayé avec les forward declaration mais comme il s'agit de 2 classes template le code ne peut pas être placé dans des fichiers .cpp et donc l'inclusion mutuelle ne peut se faire (je vais tester pour confirmer cela).
Pouvez-vous me dire que dois-je ajouter en en-tête de fichier au niveau des templates et des forwards declaration ? Sachant que j'ai 2 fichiers .hpp contenant les patrons des classes A et B :
A.hpp :
et B.hpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #include "B.hpp" template <typename T> class A { public: private: std::list<B<T>*> m_listB; };
(ce code est indicatif et n'est en aucun cas sensé marcher, mais juste pour se représenter le problème)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 template <typename T> class A; template <typename T> class B { public: private: std::list<A<T>*> m_listA; };
Merci pour votre aide![]()
Partager