我基本上是在尝试做模板类中单个方法的模板特化中讨论的内容,除了我的 TClass 有多个模板参数,如下所示:
template < class KEY, class TYPE >
class TClass
{
public:
:
void doSomething(KEY * v);
:
};
template < class KEY, class TYPE >
void TClass<KEY, TYPE>::doSomething(KEY * v)
{
// do something
}
到目前为止这工作,但我如何为一个模板参数定义一个专门的实现?我试着添加这个:
template < class TYPE >
void TClass<int, TYPE>::doSomething(int * v)
{
// do something if KEY is int
}
但是编译器抱怨该方法/函数的“无法将函数定义与现有声明匹配”(VC2010)。
作为旁注:如果我同时专门化两个模板参数,它可以工作:
template < >
void TClass<int, char>::doSomething(int * v)
{
// do something if KEY is int and TYPE is char
}
但这不是我想做的。
有什么建议么?