zoukankan      html  css  js  c++  java
  • 模板,无法解析的外部符号

    问题描述

    c++类时,习惯将类的声明与实现放在不同的文件中(*.h;*.cpp),所以在写模板类时,我也习惯性的这么做。编译后,提示无法解析的外部符号,

     

    解决方案一

    将模板类的声明与实现放在同一个*.h文件中

    解决方案二

    保持声明与实现放在不同的文件中,但是需要在*.h文件的最后include实现文件,实现文件的后缀名不能用*.cpp,不同编译不过,如下,

    *.h文件

    #ifndef TEMPLATE_HEAD_FILE
    #define TEMPLATE_HEAD_FILE
    
    #include <vector>
    
    
    template <class T>
    class Template
    {
    public:
        Template();
        virtual ~Template();
    
        void Add(const T& val );
        T First();
    
    private:
        std::vector<T> m_List;
    };
    
    
    #include "Template.impl"
    
    #endif //TEMPLATE_HEAD_FILE

    Template.impl文件

    template <class T>
    Template<T>::Template()
    {
    
    }
    
    
    template <class T>
    Template<T>::~Template()
    {
    
    }
    
    template <class T>
    void Template<T>::Add(const T& val )
    {
        m_List.push_back( val );
    }
    
    template <class T>
    T Template<T>::First()
    {
        if( m_List.empty() )
        {
            return T();
        }
    
        return m_List.at(0);
    }
    作者:shanql 转载请标明出处,谢谢。
  • 相关阅读:
    lau-表和for while循环
    lua学习笔记——lua数据类型
    javascript 高级程序设计1--14章重点总结
    消息推送之androidpn部署
    extjs底层源码实现继承分析
    cache数据库学习周结
    sql Cursor的用法
    java 报表到excel
    html5之datalist标签
    学习笔记之html5相关内容
  • 原文地址:https://www.cnblogs.com/shanql/p/5223111.html
Copyright © 2011-2022 走看看