1.遇到的问题描述
编译时某个构造函数报错:
1 error: undefined reference to 'vtable for XXX'
2.原因分析
错误的原因:这种情况一般是在继承了QObject的类出现,通常是应为,新定义的子类,没有去实现父类的纯虚函数。
在Qt中,遇到这种情况首先因该想到,在一个类中添加了新继承于Qobject的类,并且还添加了 Q_OBJECT这个宏,
之后不管是构建还是重新构建都会报这个错误,根本原因是只执行构建和重新构建并不会去编译 Q_OBJECT 宏(也不会生成新的moc文件),
因此需要先执行qmake让 moc 编译器 去 预编译 Q_OBJECT 宏。ps:可以每次运行程序前执行一次qmake简单粗暴
3.解决思路
重新执行qmake并重新构建。
一般情况下这个问题就解决了,避免自己忘记做个笔记~