今天明白了一点模板函数的事情

下面这个代码出错:

 

//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

 

 

你可能感兴趣的:(今天明白了一点模板函数的事情)