如何在类模板之外定义嵌套成员模板?

2024-03-19

考虑以下类模板:

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(使用前将#替换为@)

如何在类模板之外定义嵌套成员模板? 的相关文章

随机推荐