亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

未定義的符號“ vtable for…”和“ typeinfo for ...”?

未定義的符號“ vtable for…”和“ typeinfo for ...”?

C++
溫溫醬 2019-12-04 14:32:58
幾乎是最后一步,但仍然有些奇怪。bash-3.2$ makeg++ -Wall -c -g Myworld.ccg++ -Wall -g solvePlanningProblem.o Position.o AStarNode.o PRM.o PRMNode.o World.o SingleCircleWorld.o Myworld.o RECTANGLE.o CIRCLE.o -o solvePlanningProblemUndefined symbols:  "vtable for Obstacle", referenced from:      Obstacle::Obstacle()in Myworld.o  "typeinfo for Obstacle", referenced from:      typeinfo for RECTANGLEin RECTANGLE.o      typeinfo for CIRCLEin CIRCLE.old: symbol(s) not foundcollect2: ld returned 1 exit statusmake: *** [solvePlanningProblem] Error 1vtable和typeinfo是什么意思?
查看完整描述

3 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

如果Obstacle是抽象的基類,請確保將其所有虛擬方法聲明為“純虛擬”:


virtual void Method() = 0;

該= 0告訴編譯器,這個方法必須重寫由派生類,可能不會有它自己的實現。


如果該類包含任何非純虛函數,則編譯器將假定它們在某處具有實現,并且其內部結構(vtable和typeinfo)可能與其中的一個在同一目標文件中生成;如果未實現這些功能,則內部結構將丟失,并且您會得到這些錯誤。


查看完整回答
反對 回復 2019-12-04
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

障礙類需要一個虛擬的析構函數。將析構函數定義更改為:


virtual ~Obstacle();

析構函數的定義還會為具有虛函數的類創建vtable。它還確保通過基類指針刪除派生類實例的操作正確。


查看完整回答
反對 回復 2019-12-04
  • 3 回答
  • 0 關注
  • 1071 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號