可能重复:
为什么模板只能在头文件中实现?
我在函数 main 中编写了一个模板函数和 int 类型的调用:
template <class T> T max (T a, T b) { }
int main() {
max(1,2);
}
正如大多数 C++ 书籍所说,该int max(int,int)
函数将在编译器满足max(1,2)
.
但是在另一个文件中,我写了 的声明int max(int,int)
并调用它,但是编译器(实际上是链接器)捕获了一个错误,说max(int,int)
找不到引用。
extern int max(int,int);
max(1,2); // Error:undefined reference to max(int,int)
那么,有什么问题,以及如何使用 extern 而不是头文件声明来调用 max(int,int) 函数。
非常感谢。