undefined reference to `vtable for XX::XX'
From: http://mylovejsj.blog.163.com/blog/static/386739752009010043162/
在Qt中會(huì)一不小心遇到一個(gè)編譯錯(cuò)誤:"undefined reference to `vtable for...", 如果你是第一次遇到這種問(wèn)題還真不知怎么辦?到網(wǎng)上一搜,很多什么關(guān)于解決這個(gè)錯(cuò)誤的總結(jié),也不一定頂用。我昨天遇到這個(gè)問(wèn)題,找大半天,也按網(wǎng)上所說(shuō)的方法做了就是不行。結(jié)果原來(lái)錯(cuò)誤我的子類(lèi)的一個(gè)虛函數(shù)聲明了,而在.cpp文件中沒(méi)有實(shí)現(xiàn)代碼。
??? 比如:
??? class QParent
??? {
????? public:
???????? QParent();
???????? virtual ~QParent();
????????? ...//其它代碼
??? };
??? class QChild:public QParent
??? {
????? public:
???????? QChild();
???????? ~QChild();
????????? ...//其它代碼
??? };
顯然類(lèi)QChild的析構(gòu)函數(shù)~QChild()是一個(gè)虛函數(shù),必須得定義它。所以在QChild的實(shí)現(xiàn).cpp文件中
應(yīng)該添加該函數(shù)的實(shí)現(xiàn)部分,如下
??? QChild::~QChild()
?? {
???? ...//實(shí)現(xiàn)代碼
?? }
如果你認(rèn)為QChild不需要釋放資源,不需要添加實(shí)現(xiàn)代碼,可以把類(lèi)聲明改一下即可,如下
class QChild:public QParent
??? {
????? public:
???????? QChild();
???????? ~QChild(){};
????????? ...//其它代碼
??? };
紅色部分為添加部分,如果不添加也不在實(shí)現(xiàn).cpp文件添加該虛函數(shù)的實(shí)現(xiàn)就會(huì)出“undefined reference to `vtable for QChild”的錯(cuò)誤
總結(jié)
以上是生活随笔為你收集整理的undefined reference to `vtable for XX::XX'的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: UIT创新科存储系统服务“500强”汽车
- 下一篇: 使用pdb调试Python程序