Qt:对于MyClass'的未定义的对vtable的引用

时间:2015-03-12 00:31:46

标签: c++ qt

我正在为我的项目使用Qt Creator。当我尝试运行下面的代码时,逐字,我得到编译器错误undefined reference to 'vtable for MyClass'。我环顾四周,显然这是编译器说的虚拟函数缺失实现的方式。

在myclass.h中:

class MyClass : public QObject {
  Q_OBJECT

 public:
  MyClass(QTimer* timer) {}
  virtual ~MyClass() {}
};

在main.cc中:

int main(int argc, char* argv[]) {
  QApplication app(argc, argv);
  QTimer timer;
  MyClass myclass(&timer);
  return app.exec();
}

我不知道自己做错了什么..

1 个答案:

答案 0 :(得分:1)

你需要运行qmake。只需点击构建就不会再次运行qmake

qmake运行moc,生成.cpp& .h基于你的.ui文件。这些文件与项目的其余部分没有正确排列,因为它们没有更新。很高兴记住,如果你曾经改变过你的ui,请记得运行qmake。

有关vtable及其功能的更多详细信息: http://en.wikipedia.org/wiki/Virtual_method_table