首頁 > 後端開發 > C++ > 為什麼我的 C 程式碼會產生'未定義的類型資訊引用”錯誤?

為什麼我的 C 程式碼會產生'未定義的類型資訊引用”錯誤?

DDD
發布: 2024-12-04 12:34:10
原創
646 人瀏覽過

Why Does My C   Code Produce

理解「g undefined reference to typeinfo」錯誤

當遇到「undefined reference to typeinfo」連結器錯誤時,深入研究至關重要這些消息背後的根本原因。一個潛在的原因在於聲明虛擬函數而不提供其定義。

虛擬函數允許多態性,使衍生類別能夠覆寫從其基底類別繼承的方法並提供不同的實作。但是,當在沒有定義的情況下聲明虛擬函數時,編譯器會指示實作是在其他地方提供的。這意味著連結器將在連結階段嘗試尋找遺失的定義,並引用其他編譯單元或函式庫。

要消除此錯誤,虛擬函數必須附有定義。這會將函數宣告與其實作相關聯,從而防止連結器稍後嘗試解析參考。已定義的虛函數顯示為:

virtual void fn() { /* insert code here */ }
登入後複製

相反,沒有定義的虛函數聲明類似於:

virtual void fn();
登入後複製

此聲明無法提供定義,導致「未定義」引用typeinfo」錯誤。

類似地,它相當於宣告一個外部變數而不定義it:

extern int i;
int *pi = &i;
登入後複製

在這種情況下,編譯器指示「i」整數在其他地方聲明,且必須在連結期間解析。

以上是為什麼我的 C 程式碼會產生'未定義的類型資訊引用”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板