关于C++的函数模板问题

来源:互联网 发布:山东大成软件 编辑:程序博客网 时间:2024/05/17 08:48

      在讨论模板问题前,我先介绍一下C++的分别编译分别编译从字面是一个一个的编译的意思,说明白的就是:一个接一个地把cpp文件编译完,链接时明确各个生成代码中函数的调用关系。总之编译时cpp文件之间是互不干涉的。对于一般函数,这没问题。但,模板函数需要通过调用它的代码来实例化(即生成机器代码),如果调用的代码在另一个cpp文件中,模板函数就不会实例化,链接时链接器就找不到函数,从而报错。所以模板函数和调用它的代码一定要在同一个文件中。当然你也可以这样:把模板函数放在A.cpp中,若在B.cpp调用,在B.cpp中加入 #include "A.cpp" 。

       其实在c++标准中专门有一个关键字export可以实现模板函数的分别编译的,不过大多数编译器都不支持(包括vs 2008/2010、gcc)。