【问题标题】:c++ template function error: template-id does not match any template declaration [duplicate]c ++模板函数错误:模板ID不匹配任何模板声明[重复]
【发布时间】:2016-11-15 10:49:28
【问题描述】:

我在 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

问题是什么以及如何解决?

【问题讨论】:

    标签: c++ templates


    【解决方案1】:

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

    你可能需要

    createHelper<int>(int& p_user)
    

    而不是

    createHelper<int>(int* p_user)
    

    【讨论】:

    • 我改成createHelper(int& p_user),还是一样的错误
    【解决方案2】:

    您的模板声明要求您的参数是 reference 类型,但在您的专业化中您提供了一个不匹配的 pointer。将您的专业更改为:

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

    或者将您的模板声明更改为:

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

    【讨论】:

    • 我改成createHelper(int& p_user),还是一样的错误
    • 我的锅 - live code
    猜你喜欢
    • 2011-04-25
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多