基本上,我试图做的是在Template specialization of a single method from a templated class除了我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
}
但是这不是我想做的事情。
有什么建议吗?
顺便说一句,从VS2015的错误信息可以广泛无益。 C3860:错误的模板参数顺序,以及C2995:模板已经定义。 –