在实现所有模板化类方法之前,为什么我们需要'template <class T>'

Jam*_*age 3 c++ templates

如果我们有一个标准类:

class Foo {
  public:
    int fooVar = 10;
    int getFooVar();
}
Run Code Online (Sandbox Code Playgroud)

实施getFooVar()将是:

   int Foo::getFooVar() {
       return fooVar;
   }
Run Code Online (Sandbox Code Playgroud)

但是在一个模板化的课堂上:

template <class T>
class Bar {
  public:
    int barVar = 10;
    int getBarVar();
}
Run Code Online (Sandbox Code Playgroud)

实施getBarVar()必须是:

template <class T>
int Bar<T>::getBarVar(){
   return barVar();
}
Run Code Online (Sandbox Code Playgroud)

为什么我们必须在template <class T>函数实现之前getBarVarBar<T>::(而不是Bar::)相反,考虑到函数不使用任何模板化变量的事实?

Som*_*ude 6

你需要它,因为Bar它不是一个类,它是一个模板.Bar<T>是班级.