Bonjour à tous
Je souhaite créer des objets liés entre eux par des pointeurs : A <-> B <-> C
Sans template, pas de problème :
Maintenant, même problème avec de templates :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // forward declaring struct B; struct C; // declaring struct A { B* b; } struct B { A* a; C* c; } struct C { B* b; }
Forcement, ça pose problème au niveau compilation puisque B2 et C2 ne sont pas connu dans A2 et B2 respectivement. J'ai essayé d'ajouter avant la spécialisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 // declaring template<typename B> struct A { B* b; } template<typename A, typename C> struct B { A* a; C* c; } template<typename B> struct C { B* b; } // specialization typedef A<B2> A2; // B2 inconnu (error: B2 was not declared in this scope) typedef B<A2, C2> B2; // C2 inconnu typedef C<B2> C2;
Un idée du comment faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 template<typename T> struct B2; template<typename T1, typename T2> struct C2; typedef A<B2> A2; // (error: type/value mismatch at argument 1 in template parameter list for template<typename B> struct A
Merci
Partager