我在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
问题是什么以及如何解决?
答案 0 :(得分:1)
问题是指针和引用是不同的东西。您的模板专精化具有与模板不兼容的签名,因为int*
和int&
是不同的类型。
可能需要
createHelper<int>(int& p_user)
而不是
createHelper<int>(int* p_user)
答案 1 :(得分:0)
您的模板声明要求您的参数为参考类型,但在您的专业化中,您提供指针,而不是匹配。将您的专业化更改为:
template<>
void UserHelpler::createHelper<int>(int& p_user)
或者将模板声明更改为:
template <typename ValueType>
void createHelper(ValueType* value);