创建新的class时,可能会出现undefined reference to "vtable for xxx"这种错误提示,我为了多线程而创建了另一个类来使用的时候,就出现了这问题,说说我的解决步骤吧:
- 审视一下自己的语句有没有错误,我查书抄下的代码,除了名字(Network)不同以外,其他都是一致的。
network.h
#include <QThread>
#include <QObject>
class Network : public QThread
{
Q_OBJECT
public:
explicit Network(QObject *parent = 0);
};
network.cpp
#include "network.h"
Network::Network(QObject * parent) :
QThread(parent)
{}
- 看一下.pro文件有没有包含所需的东西,它需要QT+=core,但是明显我已经有了。
帮助->索引->搜索QThreat
- 然后我突然发现一个问题,它这里写着继承QOject类,需要的时QThead头文件,那我包含QOject是不是把它覆盖了?
然后我就把QOject删掉,然后就成功了!
删除前,编译错误
删除后,完美通过
- 还遇到一种情况是,改了别的名字,比如开头大小写改了这样,那还是最好还是删了原来的,重新创建一个class,我试过,能成!
总结:看看是否有包含了父类而把子类覆盖掉的情况,删掉父类试试!
我的QT版本
网友评论