下面这个代码出错: //test.h template<typename T> void fun(T x); //test.cpp #include "test.h" template<typename T> void fun(T x) { std::cout<<x<<std::endl; } //main.cpp #include<iostream> #include "test.h" int main() { int i=1; fun(i); return 0; } 结果分别编译时没问题,连接时报错: Linking... main.obj : error LNK2001: unresolved external symbol "void __cdecl fun 解决办法,将模板函数的定义放到头文件中: //test.h #include<iostream> template<typename T> void fun(T x) { std::cout<<x<<std::endl; } //main.cpp #include<iostream> #include "test.h" int main() { int i=1; fun(i); return 0; } OK