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 转载请标明出处,谢谢。
  • 相关阅读:
    python闭包和装饰器(转)
    python生成器(转)
    python中迭代器(转)
    python中xrange和range(转)
    python函数式编程(转)
    图论
    查找算法
    优先队列和堆排序(转)
    手动爬虫之淘宝笔记本栏(ptyhon3)
    手动爬虫之报头及代理封装类(python3)
  • 原文地址:https://www.cnblogs.com/shanql/p/5223111.html
Copyright © 2011-2022 走看看