c++模板类的 虚函数找不到符号

http://bbs.csdn.net/topics/390800051

代码如下,abstract.h文件

C/C++ code
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
template<typename T>
class abstract
{
public:
    abstract(const T& type);
    virtual ~abstract();
 
    const T& type() const
    return m_iType; }
 
protected:
    virtual void parser() = 0;
 
private:
    T m_iType;
};



abstract.cpp文件

C/C++ code
 
?
1
2
3
4
5
6
7
8
9
10
11
template <typename T>
abstract<T>::abstract(const T &type, QObject *parent)
    :QObject(parent),
     m_iType(type)
{
}
 
template <typename T>
abstract<T>::~abstract()
{
}



这个用于继承的类没问题,然后下面我派生了一个类
derive.h文件

C/C++ code
 
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "abstract.h"
 
class derive
    :public abstract<std::string>
{
public:
    derive(const std::string& type, QObject *parent = 0)
        :abstract<std::string>(type, parent)
    {
    }
 
    ~derive()
    {}
 
protected:
    void parser()
    {}
};



我的实现如果写在.h里,那么是可以编译通过的;
但是如果我把定义和实现分离,按常见的C++写法放到CPP文件里,链接的时候就会报错,说无法链接到derive的构造和析构函数,而且还构造函数错误报了3个,析构报了两个……

百思不得其解,求解答……

posted @ 2016-04-13 17:49  jimshi  阅读(1328)  评论(0编辑  收藏  举报