首頁  >  文章  >  後端開發  >  為什麼我的 C 程式中會出現「未定義符號:‘vtable’ 和‘typeinfo’\」錯誤?

為什麼我的 C 程式中會出現「未定義符號:‘vtable’ 和‘typeinfo’\」錯誤?

Linda Hamilton
Linda Hamilton原創
2024-10-31 16:02:56351瀏覽

Why Am I Getting

未定義的符號:「vtable」和「typeinfo」

問題:

編譯時一個C程序,出現以下錯誤:

Undefined symbols:
  "vtable for Obstacle"
  "typeinfo for Obstacle"

這些符號是什麼意思,如何解決?

答案:

在 C 中,虛方法是在基類中聲明並在派生類中重寫的方法。為了允許在執行時間動態綁定到正確的方法,編譯器會為每個包含虛擬方法的類別產生虛擬方法表 (vtable) 和類型資訊 (typeinfo)。

錯誤表示編譯器無法找到 Obstacle 類別的 vtable 和 typeinfo。如果出現以下情況,就會發生這種情況:

  • Obstacle 類別未正確宣告為抽象,或
  • Obstacle 類別包含未在衍生類別中實現的非純虛方法。

要解決這些錯誤,請確保Obstacle 類別中的所有虛擬方法都宣告為純虛擬方法,使用以下語法:

<code class="cpp">virtual void Method() = 0;</code>

這表明必須重寫該方法在衍生類別中,並且它在基底類別中可能沒有自己的實作。

如果 Obstacle 類別包含任何非純虛擬方法,請確保它們在衍生類別中實作。否則,編譯器將假設它們在某處有實現,並在不包含實際實現的物件檔案中產生 vtable 和 typeinfo。

以上是為什麼我的 C 程式中會出現「未定義符號:‘vtable’ 和‘typeinfo’\」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn