未定义的参考`vtable [英] Undefined reference to `vtable
问题描述
hello world
,它的工作原理很好,但是当我创建自定义列表窗口小部件时,我得到未定义的引用到vtable
错误当我编译它: 我正在使用eclipse和c ++
#ifndef QMENUFILTER_H_
#define QMENUFILTER_H_
#include< qmenu.h>
class CustomMenuFilter:QMenu
{
Q_OBJECT
public:
CustomMenuFilter();
〜CustomMenuFilter();
private:
QMenu FilterMenu;
QAction * AddFilterAct;
QAction * DeleteFilterAct;
Q_SLOT
void contextMenuEvent(QContextMenuEvent * event);
};
#endif / * QMENUFILTER_H_ * /
#includeQMenuFilter.h
CustomMenuFilter :: CustomMenuFilter():QMenu()
{
DeleteFilterAct = new QAction(DeleteFilter,this);
AddFilterAct = new QAction(AddFilter,this);
AddFilterAct-> setText(AddFilter);
DeleteFilterAct-> setText(DeleteFilter);
}
日志文件:
http://pastebin.com/raw.php?i=qZes6bkm
您还需要定义dtor,这将创建vtable
CustomMenuFilter ::〜CustomMenuFilter(){...}
虽然有一些(依赖于编译器)描述何时完全编译器发出一个vtable的规则,通常对你而言并不重要。重要的是,您需要定义dtor,编译器会照顾到vtable,所以如果您看到错误undefined reference to vtable,请始终检查dtor。
I am creating a GUI application using Qt; I try to do hello world
using Qt and it works perfectly, but when I create custom list widget I get undefined reference to vtable
error when I compile it:
I am using eclipse and c++
#ifndef QMENUFILTER_H_
#define QMENUFILTER_H_
#include <qmenu.h>
class CustomMenuFilter : QMenu
{
Q_OBJECT
public:
CustomMenuFilter () ;
~CustomMenuFilter() ;
private:
QMenu FilterMenu;
QAction *AddFilterAct ;
QAction *DeleteFilterAct ;
Q_SLOT
void contextMenuEvent(QContextMenuEvent *event);
};
#endif /* QMENUFILTER_H_ */
#include "QMenuFilter.h"
CustomMenuFilter::CustomMenuFilter():QMenu()
{
DeleteFilterAct = new QAction("DeleteFilter" , this);
AddFilterAct = new QAction("AddFilter" , this);
AddFilterAct->setText("AddFilter");
DeleteFilterAct->setText("DeleteFilter");
}
LOG file : http://pastebin.com/raw.php?i=qZes6bkm
You need to define the dtor as well, which will create the vtable
CustomMenuFilter::~CustomMenuFilter() { ... }
While there are some (compiler-dependent) rules that describe when exactly the compiler emits a vtable, it's usually not important for you to know. The important thing is, that you need to define the dtor and the compiler will take care of the vtable then, so if you see the error "undefined reference to vtable", always check the dtor.
这篇关于未定义的参考`vtable的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!