zoukankan      html  css  js  c++  java
  • c++模板类/模板函数的声明与定义应该放在头文件里

    如果函数模板按照普通的函数声明放在头文件的,定义放在。cpp文件,会出现错误:

    模板函数声明、定义、引用有什么要注意的问题么?? 
    --   mylib.h   -- 
    
    template   <class   T> 
            T   max_v(T   v1,   T   v2); 
    
    --   mylib.cpp   -- 
    
    #include   "mylib.h " 
    
    template   <class   T> 
            T   max_v(T   v1,   T   v2) 
    { 
            return   (v1   >   v2   ?   v1   :   v2); 
    } 
    
    --   mylibtest.cpp   -- 
    
    #include   "mylib.h " 
    
    int   main() 
    { 
            std::cout   < <   max_v(2,   4)   < <   std::endl; 
            system( "pause "); 
            return   0; 
    }   
    
    使用g++编译器,提示“undefined   reference   to   `int   max_v <int> (int,   int) '
    

     函数模板是编译时自动生 成各种类型的函数实例,如同内联函数,编译时其实现必须可见,一般其实现应该包含在头文件中。

    模板函数的声明定义要放在头文件中,不可以分开放在.h和.cpp中。 

    同样,在一个类中将一个成员函数定义为函数模板时也是要遵从这个规则:实现要放在头文件里。

  • 相关阅读:
    JAVA 动态代理
    IDEA 配置阿里云Maven
    JAVA Spring5静态代理
    Spring5 常用注解
    react
    Angular
    微信小程序
    H5
    vue-ui
    jQuery
  • 原文地址:https://www.cnblogs.com/youxin/p/2570192.html
Copyright © 2011-2022 走看看