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並重新構建。
一般情況下這個問題就解決了,避免自己忘記做個筆記~