【发布时间】:2010-10-21 11:09:29
【问题描述】:
考虑以下类模板:
template <class T>
class MyClass
{
void MyFunc();
};
template <class T>
void MyClass<T>::MyFunc()
{
//...implementation goes here
}
我需要添加另一个函数模板MyFunc2,它接受模板参数T2
即,
template <class T>
class MyClass
{
void MyFunc();
template <class T2>
static void MyFunc2(T2* data);
};
template <class T>
void MyClass<T>::MyFunc()
{
//...implementation goes here
}
template <class T, class T2>
void MyClass<T>::MyFunc2(T2* pData) // error here
{
//...implementation goes here
}
我正在使用 VS 2008 编译器。我收到错误消息:
错误 C2244:无法将函数定义与现有声明匹配
在这种情况下,函数的定义和声明应该是什么样子?
【问题讨论】:
-
通常情况下,在类模板定义中定义内联模板成员函数以避免所有这些小问题会更容易。