我正在为我的项目使用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();
}
我不知道自己做错了什么..
答案 0 :(得分:1)
你需要运行qmake。只需点击构建就不会再次运行qmake
qmake运行moc,生成.cpp& .h基于你的.ui文件。这些文件与项目的其余部分没有正确排列,因为它们没有更新。很高兴记住,如果你曾经改变过你的ui,请记得运行qmake。
有关vtable及其功能的更多详细信息: http://en.wikipedia.org/wiki/Virtual_method_table