c++模板函数错误:template-id不匹配任何模板声明

c++ template function error: template-id does not match any template declaration

本文关键字:不匹配 任何模 template-id 声明 错误 函数 c++      更新时间:2023-10-16

我有下面的c++函数模板代码:

class UserHelpler{
public:
   template <typename ValueType>
   void createHelper(ValueType& value);
};
template<>
void UserHelpler::createHelper<int>(int* p_user)
{
}
当我构建它时,它显示以下错误:
error: template-id 'createHelper<int>' for 'void UserHelper::createHelper(int*)'
does not match any template declaration

问题是什么?如何解决?

问题是指针和引用是不同的东西。您的模板专门化有一个与模板不兼容的签名,因为int*int&是不同的类型。

可能,你需要

createHelper<int>(int& p_user)

代替

createHelper<int>(int* p_user)

你的模板声明要求你的形参是引用类型,但是在你的专门化中你提供了一个指针,这是不匹配的。将专门化更改为:

template<>
void UserHelpler::createHelper<int>(int& p_user)

或者将模板声明更改为:

template <typename ValueType>
void createHelper(ValueType* value);