如果函数模板按照普通的函数声明放在头文件的,定义放在。cpp文件,会出现错误:
模板函数声明、定义、引用有什么要注意的问题么??
-- mylib.h --
template <class T>
T max_v(T v1, T v2);
-- mylib.cpp --
#include "mylib.h "
template <class T>
T max_v(T v1, T v2)
{
return (v1 > v2 ? v1 : v2);
}
-- mylibtest.cpp --
#include "mylib.h "
int main()
{
std::cout < < max_v(2, 4) < < std::endl;
system( "pause ");
return 0;
}
使用g++编译器,提示“undefined reference to `int max_v <int> (int, int) '”
函数模板是编译时自动生 成各种类型的函数实例,如同内联函数,编译时其实现必须可见,一般其实现应该包含在头文件中。
模板函数的声明定义要放在头文件中,不可以分开放在.h和.cpp中。
同样,在一个类中将一个成员函数定义为函数模板时也是要遵从这个规则:实现要放在头文件里。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)