今天第一次写了模板类。在写的时候把声明和实现分开后,即.h文件和.cpp文件。在链接时提示找不到模板类中某个方法的定义。
查阅资料发现:模板类在使用的时候。编译器需要找到它的定义。
即:
编译器使用模板,通过更换模板参数来创建数据类型。这个过程就是模板实例化(Instantiation)。
从模板类创建得到的类型称之为特例(specialization)。
模板实例化取决于编译器能够找到可用代码来创建特例(称之为实例化要素,
point of instantiation)。
要创建特例,编译器不但要看到模板的声明,还要看到模板的定义。
模板实例化过程是迟钝的,即只能用函数的定义来实现实例化。
而声明和实现分开后,我们#include了头文件,编译器找不到其实现,所以出错。