Implémenter une fonction virtuelle pure avec une instanciation explicite de template
Bonjour à tous,
Tout est dans le titre. D'un côté, j'ai une classe d'interface :
Code:
1 2 3 4
| class my_interface
{
virtual void foo(int i) = 0;
}; |
De l'autre une classe pouvant l'implémenter, ayant une fonction template du même nom :
Code:
1 2 3 4 5 6 7 8
| class my_impl
{
template<typename T>
void foo(T t)
{
//fait des choses avec t
}
}; |
Comment faire pour que my_impl puisse implémenter my_interface ?
Si je laisse comme ci-dessus, le compilateur me dit que foo(int) est virtuel pur, donc que my_impl ne peut être instancié.
J'ai donc pensé à créer une instanciation explicite de foo() pour le type int, mais j'ai toujours le même message :
le .h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class my_impl: public my_interface
{
template<typename T>
void foo(T t);
};
template<typename T>
void my_impl::foo(T t)
{
//
}
//spécialisation
template<>
void my_impl::foo(int i); |
le .cpp
Code:
1 2 3
| //instanciation explicite
template
void my_impl::foo(int i); |
Que faire pour arriver à mes fins ?