具体情况是,没有把 模板类中函数的定义写在相应的.h文件中
参考:http://stackoverflow.com/questions/8752837/undefined-reference-to-template-class-constructor
我的理解:
像之前一样把函数声明和定义分离,却遇到了很奇怪的错误。Google之后才知道:模板类只是告诉了编译器如何去生成类,并没有生成类,在编译main.cpp的时候,生 成List<QUADPTR>类时,其中的函数因为在list.h中没有具体的定义,都没有生成,而在编译list.cpp时,编译器并不知道要生成哪个类,并没有生成例如push_back等函数,这导致在连接的时候,List<QUADPTR>::push_back并没有相应的实现。解决方法有两个,一个是把定义写在.h文件中,这样编译main.cpp时,由于include.h,是会生成具体的函数的,另一个方法是在list.cpp文件中告诉编译器要生成的类,template class List<QUADPTR>。