在做数据结构大作业---池塘夜雨中,定义粒子系统为模板类,然后把函数的定义和实现放在了不同文件中,vs2008中编译通过,但链接出现很多无法解析的外部命令,一看都是模板类的函数出错了,被这个问题困扰了一天,百思不得其解,后来上网看了后才发现原来模板类的函数定义和实现必须在同一h文件中,网上这样解释:
[quote]《c++编程思想》中说:模板类定义很特殊,由template<...>定义的任何东西都意味着编译器在当时不为它分配内存空间,它一直处于等待状态,直到被一个模板实例告知,即模板参数是由编译器来替换的。
为了容易使用,几乎总是在头文件中放置全部的模板声明和定义。有时,也可能为了满足特殊需要而要在独立的cpp中放置模板的实现。但大部分现在的编译器还不支持模板类的定义和实现分开[/quote]
[quote]《c++编程思想》中说:模板类定义很特殊,由template<...>定义的任何东西都意味着编译器在当时不为它分配内存空间,它一直处于等待状态,直到被一个模板实例告知,即模板参数是由编译器来替换的。
为了容易使用,几乎总是在头文件中放置全部的模板声明和定义。有时,也可能为了满足特殊需要而要在独立的cpp中放置模板的实现。但大部分现在的编译器还不支持模板类的定义和实现分开[/quote]