为什么此代码会出现此错误?我不是想做明确的专业化。这是在Visual Studio 2012 Desktop Express中。
错误C2906:'T * testTemplate :: popNoWait(int *)':explicit 专业化需要'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;
}
答案 0 :(得分: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;
}