在类之外定义“模板化类”函数

时间:2011-11-04 19:31:04

标签: c++

我有这个班级

template <class T> class dynamic_array
  {

和这个功能:

void dynamic_array::randorder()
  {
  srand(time(NULL));
  int *ap;
  for(ap=array;k!=array+size;++k){*k=rand();} 
  }

编译器抱怨我的功能 - “没有模板参数”。我该如何添加?

2 个答案:

答案 0 :(得分:8)

template <class T>
void dynamic_array<T>::randorder()
{
  srand(time(NULL));
  for(int *ap = array; k != array + size; ++k)
  {
    *k = rand();
  }
}

答案 1 :(得分:3)

应该是

template <class T>
void dynamic_array<T>::randorder()
  {
...
  }

另外,请记住,如果需要在不同的.cpp文件中使用它,必须将定义放入头文件中。

我认为array必须是T类型的数据成员,因此以下内容不适用。但总的来说,如果您发现类模板的某些成员函数不依赖于模板参数,那么将它们分解为非模板基类是有意义的。它减少了可执行文件的大小,使您的生活更轻松。