今天写程序时,将函数模板的声明和定义分开放在头文件和.cpp文件中,发生了连接错误。上网查看资料和查看《C++ PRIMER 5》P582发现,:
函数模板和类模板成员函数的定义通常放在头文件中,除非使用export关键字实现分离。
下面是《C++ PRIMER 5》的原文(P582):
关键概念:模板和头文件
模板包含两种名字:
当使用模板时,所有不依赖于模板参数的名字都必须是可见的,这是由模板的提供者来保证的。而且,模板的提供者必须保证,当模板被实例化时,模板的定义,包括类模板的成员的定义,也必须是可见的。1.那些不依赖于模板参数的名字。
2.那些依赖于模板参数的名字。
用来实例化模板的所有函数、类型以及与类型关联的运算符的声明都必须是可见的,这是由模板的用户来保证的。
通过组织良好的程序结构,恰当使用头文件,这些要求都容易满足。模板的设计者应该提供一个头文件,包含模板定义以及在类模板或成员定义中用到的所有名字的声明。模板的用户必须包含模板的头文件,以及用来实例化模板的任何类型的头文件。