mar*_*000 3 c++ templates visual-studio-2010 specialization
我基本上试图做一个模板化专业化中讨论的内容,这个模板专门化来自模板化的类,除了我的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
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是有效的,但我如何为一个模板参数定义一个专门的实现?我尝试添加这个:
template < class TYPE >
void TClass<int, TYPE>::doSomething(int * v)
{
// do something if KEY is int
}
Run Code Online (Sandbox Code Playgroud)
但是编译器抱怨"无法将函数定义与现有声明匹配"(VC2010)用于该方法/函数.
作为旁注:如果我同时专门化两个模板参数,它可以工作:
template < >
void TClass<int, char>::doSomething(int * v)
{
// do something if KEY is int and TYPE is char
}
Run Code Online (Sandbox Code Playgroud)
但这不是我想要做的.
有什么建议?
在通过部分特化定义方法之前,您必须专门化整个类:
template <typename T, typename U>
class TClass;
template <typename T>
class TClass<int, T>
{
void doSomething(int* v);
};
template <typename T>
void TClass<int, T>::doSomething(int* v)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1413 次 |
| 最近记录: |