Bonjour,
j'ai écrit le code suivant :
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;
}
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).

Est-ce que quelqu'un aurait une idée à soumettre ?