2016-11-15 94 views
1

我有函數模板的C++下面的代碼:C++模板函數錯誤:模板id不匹配任何模板聲明

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 

什麼問題以及如何解決?

回答

1

問題是指針和引用是不同的東西。您的模板專門化具有與模板不兼容的簽名,因爲int*int&是不同的類型。

也許,你需要

createHelper<int>(int& p_user) 

,而不是

createHelper<int>(int* p_user) 
+0

我改createHelper (INT&p_user),但同樣的錯誤 – ratzip

0

你的模板聲明,要求您的參數是參考型的,但在你的專業化您提供指針相反,這不匹配。您的專業改爲:

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

或可選擇地改變你的模板聲明:

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

我改createHelper (INT& p_user),但它是一樣的錯誤 – ratzip

+0

Woks for me - [live code](http://coliru.stacked-crooked.com/a/ecce20bb8c2127eb) – Smeeheey