模板,无法解析的外部符号

来源:互联网 发布:提高英语水平的软件 编辑:程序博客网 时间:2024/06/05 22:47
问题描述

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);}

 

0 0
原创粉丝点击