Bonjour,
j'ai écrit le code suivant :
Le problème c'est que celui-ci ne compile pas à caque de l'erreur d'une erreur de conversion ligne 8, il n'arrive pas à convertir A<FooB>* en FooA*, et je n'arrive pas à trouver comment régler ou contourner ce problème (sachant que je ne peux pas me passer des templates à quelque endroit que ce soit).
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 template <class TB> class A; template <class TA> class B; template <class TB> class A { public: A(TB *b) { b->Add(this); } }; template <class TA> class B { public: void Add(TA *a) { // Do something } }; ////////////////////// class FooA; class FooB; class FooA : public A<FooB> { public: FooA(FooB *b) : A(b) {} }; class FooB : public B<FooA> {}; int main() { auto b = new FooB; auto a = new FooA(b); delete b; delete a; return 0; }
Est-ce que quelqu'un aurait une idée à soumettre ?
Partager