3 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
如果Obstacle是抽象的基類,請(qǐng)確保將其所有虛擬方法聲明為“純虛擬”:
virtual void Method() = 0;
該= 0告訴編譯器,這個(gè)方法必須重寫由派生類,可能不會(huì)有它自己的實(shí)現(xiàn)。
如果該類包含任何非純虛函數(shù),則編譯器將假定它們?cè)谀程幘哂袑?shí)現(xiàn),并且其內(nèi)部結(jié)構(gòu)(vtable和typeinfo)可能與其中的一個(gè)在同一目標(biāo)文件中生成;如果未實(shí)現(xiàn)這些功能,則內(nèi)部結(jié)構(gòu)將丟失,并且您會(huì)得到這些錯(cuò)誤。

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
障礙類需要一個(gè)虛擬的析構(gòu)函數(shù)。將析構(gòu)函數(shù)定義更改為:
virtual ~Obstacle();
析構(gòu)函數(shù)的定義還會(huì)為具有虛函數(shù)的類創(chuàng)建vtable。它還確保通過(guò)基類指針刪除派生類實(shí)例的操作正確。
- 3 回答
- 0 關(guān)注
- 1078 瀏覽
添加回答
舉報(bào)