probleme template a plusieurs parametres
Bonjour,
Je fais un template qui prend deux parametres, et dans une des méthodes je voudrais passer le premier paramètre a une méthode statique template du deuxieme paramètre. ca donne cela :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
template <typename A, typename B>
class Foo
{
public:
int methode(const B& ref)
{
A *p = B::getMachin<A>(ref);
if (!p)
return -1;
return p->getInt();
}
}; |
Le problème se situe a niveau de la ligne A *p = B::getMachin<A>(ref)
Le compilo (vc2005) me sort :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
Foo.hpp(35) : error C2275: 'A' : illegal use of this type as an expression
1> TypeA.h(63) : see declaration of 'TypeA'
1> Template.hpp(34) : while compiling class template member function 'int Foo<A,B>::methode(const B &)'
1> with
1> [
1> A=TypeA,
1> B=TypeB
1> ]
1> TypeA.h(63) : see reference to class template instantiation 'Foo<A,B>' being compiled
1> with
1> [
1> A=TypeA,
1> B=TypeB
1> ] |
Je ne comprend pas pourquoi il n'aime pas, la methode statique getMachin renvoie bien évidement un pointeur sur le type qu'on lui passe en paramètre template.
edit : Je precise que la class A (TypeA) hérite de Foo.
Quelqu'un voit comment résoudre l'erreur ?