2014-09-18 26 views
-1

爲什麼此代碼會給出此錯誤?我沒有試圖做明確的專業化。這是在Visual Studio 2012 Desktop Express中。錯誤:「顯式專業化需要'模板<>'」

error C2906: 'T *testTemplate::popNoWait(int *)' : explicit specialization requires 'template <>'

template <class T> class testTemplate 
{ 
public: 
    T *pop(int timeout_ms); 
    T *popNoWait(int *remaining = NULL); 
}; 

T *testTemplate<class T>::pop(int timeout_ms) 
{ 
    return popNoWait(); 
} 

T *testTemplate<class T>::popNoWait(int *remaining) 
{ 
    return NULL; 
} 

回答

4

那不是你如何從一個類模板定義的東西。您必須先使用template<>語法:

template <class T> 
T *testTemplate<T>::pop(int timeout_ms) 
{ 
    return NULL; 
} 

template <class T> 
T *testTemplate<T>::popNoWait(int *remaining) 
{ 
    return NULL; 
}