错误:“显式专业化需要'模板<>'”

时间:2014-09-18 22:29:53

标签: c++ templates

为什么此代码会出现此错误?我不是想做明确的专业化。这是在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;
}

1 个答案:

答案 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;
}