首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

一个特别奇怪的 undefined reference to ‘vtable for.'解决方法

2012-04-07 
一个特别奇怪的 undefined reference to ‘vtable for...class MyGraphicsView : public QGraphicsView{Q_

一个特别奇怪的 undefined reference to ‘vtable for...'
class MyGraphicsView : public QGraphicsView
{
  Q_OBJECT //这行与下面的发射信号的行是联动的
public:
  MyGraphicsView(QGraphicsScene *scene) : QGraphicsView(scene)
  {
  }
signals:
  void testSignal();
protected:
  void resizeEvent(QResizeEvent *event)
  {
  QGraphicsView::resizeEvent(event);
  fitInView(sceneRect(), Qt::KeepAspectRatio);
  }
  virtual void mousePressEvent ( QMouseEvent * mouseEvent )
  {
  qDebug()<<"mousePressEvent";
  emit testSignal(); //这行与上面的Q_OBJECT宏定义是联动的
  QGraphicsView::mousePressEvent(mouseEvent);
  }
};

这个代码是我修改了 QT4.7.4的两个例子,animatedtiles和dragdroprobot,结果第一个例子编译通过,第二个例子链接失败,错误信息:
debug/main.o:main.cpp:(.text$_ZN14MyGraphicsViewC1EP14QGraphicsScene[MyGraphicsView::MyGraphicsView(QGraphicsScene*)]+0x27): undefined reference to `vtable for MyGraphicsView'
debug/main.o:main.cpp:(.text$_ZN14MyGraphicsViewC1EP14QGraphicsScene[MyGraphicsView::MyGraphicsView(QGraphicsScene*)]+0x31): undefined reference to `vtable for MyGraphicsView'
debug/main.o:main.cpp:(.text$_ZN14MyGraphicsViewD1Ev[MyGraphicsView::~MyGraphicsView()]+0xb): undefined reference to `vtable for MyGraphicsView'
debug/main.o:main.cpp:(.text$_ZN14MyGraphicsViewD1Ev[MyGraphicsView::~MyGraphicsView()]+0x15): undefined reference to `vtable for MyGraphicsView'

[解决办法]
先把类分成.h和.cpp两个文件。因为有Q_OBJECT宏,需要运行MOC,而MOC要求类的声明和实现分开。

[解决办法]
把类分成.h和.cpp两个文件,因为有Q_OBJECT宏,需要运行MOC,而MOC要求类的声明和实现分开。

热点排行