错误:“显式特化需要‘模板<>’”

T S*_*rer 0 c++ templates

为什么这段代码会出现这个错误?我不是要进行明确的专业化。这是在 Visual Studio 2012 Desktop Express 中。

错误 C2906:“T *testTemplate::popNoWait(int *)”:显式特化需要“模板 <>”

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;
}
Run Code Online (Sandbox Code Playgroud)

tem*_*boy 5

这不是您从类模板中定义事物的方式。你必须先有template<>语法:

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

template <class T>
T *testTemplate<T>::popNoWait(int *remaining)
{
    return NULL;
}
Run Code Online (Sandbox Code Playgroud)