考虑以下类模板:
template <class T>
class MyClass
{
void MyFunc();
};
template <class T>
void MyClass<T>::MyFunc()
{
//...implementation goes here
}
我需要添加另一个功能模板MyFunc2
它接受模板参数T2
i.e.,
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:无法将函数定义与现有声明匹配
在这种情况下,函数的定义和声明应该是什么样的?
template <class T>
template <class T2>
void MyClass<T>::MyFunc2(T2* pData)
{
//...implementation goes here
}
$14.5.2/1 - "A template can be
declared within a class or class
template; such a template is called a
member template. A member template can
be defined within or outside its class
definition or class template
definition. A member template of a
class template that is defined outside
of its class template definition shall
be specified with the
template-parameters of the class
template followed by the
template-parameters of the member
template."
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)