头文件中的C ++模板

这个问题在这里已经有了答案:

  • 为什么只能在头文件中实现模板? 13个答案

  • C ++编译器需要查看模板定义以执行隐式实例化。 这意味着,如果C ++编译器在调用它时知道实现,则它只能自动为模板函数调用生成目标代码。

    但是,您可以依赖显式实例化。 这意味着您要求编译器为您指定的模板的特定实例生成C ++代码。 然后,在main.cpp使用模板时,链接时C ++编译器将能够找到该实现(通过外部链接)。

    //a.cpp
    
    #include "a.h"
    
    template<typename T> T foo( DWORD bar )
    {
        return T();
    }
    
    template int foo<int> (DWORD); // explicit instantiation
    
    链接地址: http://www.djcxy.com/p/37135.html

    上一篇: C++ template in header file

    下一篇: C++: Templates not working from another class