首頁 > 後端開發 > C++ > 為什麼會出現「對 WindowsTimer::_Frequency 的未定義參考」以及如何修復?

為什麼會出現「對 WindowsTimer::_Frequency 的未定義參考」以及如何修復?

Patricia Arquette
發布: 2024-12-25 14:21:10
原創
296 人瀏覽過

Why Does

對靜態成員的未定義引用

當編譯器找不到靜態成員變數的定義時,就會發生此錯誤。在本例中,它屬於 WindowsTimer 類別的靜態成員變數 _Frequency。

理解程式碼

給的程式碼是:

class WindowsTimer {
public:
  WindowsTimer() {
    _frequency.QuadPart = 0ull;
  }
private:
  static LARGE_INTEGER _frequency;
};
登入後複製

這裡,_Frequency是一個LARGE_INTEGER類型的靜態成員變量,它在

解決錯誤

錯誤訊息“undefined reference to WindowsTimer::_Frequency”::_Frequency」表示器找不到_Frequency 的定義。靜態成員變數必須在類別宣告之外定義,通常在實作 (.cpp) 檔案中。

要解決此錯誤,請將以下定義新增至.cpp 檔案:

LARGE_INTEGER WindowsTimer::_frequency;
登入後複製

這將建立一個名為_Frequency 的LARGE_INTEGER 類型的全域變數,該變數連結到WindowsTimer 類別。

為什麼其他更改不起作用

  • 將_Frequency 更改為_Frequency.QuadPart 只會定義LARGE_INTEGER 結構的QuadPart 成員,而不是_Frequency 本身。
  • 更改 _Frequency靜態 LARGE_INTEGER _Frequency.QuadPart 會嘗試將 _Frequency 重新定義為類型為 LARGE_INTEGER.QuadPart 的靜態變量,這是不正確的。

以上是為什麼會出現「對 WindowsTimer::_Frequency 的未定義參考」以及如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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