首頁 > 後端開發 > C++ > 為什麼在 C 中存取靜態常數整數成員會導致未定義的參考錯誤?

為什麼在 C 中存取靜態常數整數成員會導致未定義的參考錯誤?

Susan Sarandon
發布: 2024-11-30 21:03:21
原創
761 人瀏覽過

Why Does Accessing a Static Const Integer Member Result in an Undefined Reference Error in C  ?

靜態常數整數成員和未定義引用錯誤

C 語言允許在整數類型的類別定義中定義靜態常數成員。然而,最近的嘗試遇到了連結器錯誤。具體來說,一個名為「test」的類別宣告了一個值為 10 的靜態常數整數成員「N」。當嘗試在後續函數中存取和使用“N”時,程式碼會失敗並出現未定義的參考錯誤。

整數類型常數初始化

雖然類別聲明允許為「N」設定初始值,但應該注意的是這只是初始化器,而不是完整的定義。根據 C 標準,靜態 const 整數成員需要在類別宣告之外進行定義。

引用參數的影響

這種情況下的罪魁禍首是對「std::min」函數。由於“std::min”透過常數參考取得其參數,因此需要完全定義“N”。 “N”缺乏單獨的定義會導致未定義的引用錯誤。

避免錯誤

要解決此問題,必須定義「N」在類別聲明之外提供。這可以透過在單獨的命名空間或頭檔中聲明和初始化“N”來實現。此外,使用“constexpr”關鍵字來確保在編譯時評估“N”可能會有所幫助。

結論

中遇到的連結器錯誤此實例源自於靜態 const 整數成員「N」的不完整定義。透過理解初始化和定義的區別,解決引用參數的需求,這個問題可以得到有效的修正。

以上是為什麼在 C 中存取靜態常數整數成員會導致未定義的參考錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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