未定義的符號:「vtable」和「typeinfo」
問題:
編譯時一個C程序,出現以下錯誤:
Undefined symbols: "vtable for Obstacle" "typeinfo for Obstacle"
這些符號是什麼意思,如何解決?
答案:
在 C 中,虛方法是在基類中聲明並在派生類中重寫的方法。為了允許在執行時間動態綁定到正確的方法,編譯器會為每個包含虛擬方法的類別產生虛擬方法表 (vtable) 和類型資訊 (typeinfo)。
錯誤表示編譯器無法找到 Obstacle 類別的 vtable 和 typeinfo。如果出現以下情況,就會發生這種情況:
要解決這些錯誤,請確保Obstacle 類別中的所有虛擬方法都宣告為純虛擬方法,使用以下語法:
<code class="cpp">virtual void Method() = 0;</code>
這表明必須重寫該方法在衍生類別中,並且它在基底類別中可能沒有自己的實作。
如果 Obstacle 類別包含任何非純虛擬方法,請確保它們在衍生類別中實作。否則,編譯器將假設它們在某處有實現,並在不包含實際實現的物件檔案中產生 vtable 和 typeinfo。
以上是為什麼我的 C 程式中會出現「未定義符號:‘vtable’ 和‘typeinfo’\」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!