为类定义之外的模板类定义operator []()(数组预订)

时间:2014-02-24 19:35:23

标签: c++ templates

我认为这很容易,但它不按我预期的方式工作。这里的语法是什么?

TemplateClass.h

template <typename T> 
class TemplateClass
{
  T & operator[](size_t n);

TemplateClass.cpp

#include "TemplateClass.h"

template <typename T>
T & TemplateClass::operator[](size_t n)
{
  // member declaration not found
}

1 个答案:

答案 0 :(得分:7)

您需要提供整个类名 - 包括模板参数:

template <typename T>
T & TemplateClass<T>::operator[](size_t n)
{
  // ...
}

(另请注意,范围解析运算符为::,而不是:。)