Problème de template & conversion
Bonjour,
j'ai écrit le code suivant :
Code:
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 ?