如果函数模板按照普通的函数声明放在头文件的,定义放在。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中。 同样,在一个类中将一个成员函数定义为函数模板时也是要遵从这个规则:实现要放在头文件里。
转载请注明原文地址: https://ju.6miu.com/read-668496.html