首頁 > 後端開發 > C++ > 為什麼在 C 中存取靜態變數時會出現「未定義的靜態變數引用」錯誤?

為什麼在 C 中存取靜態變數時會出現「未定義的靜態變數引用」錯誤?

Susan Sarandon
發布: 2024-12-30 01:12:16
原創
421 人瀏覽過

Why Do I Get

C 中的靜態變數引用問題

在C 中,在非靜態類別方法中存取靜態變數可能會導致編譯錯誤,如果static變數沒有正確定義。遇到的一個常見錯誤是「對靜態變數的未定義引用。」

問題

考慮以下程式碼片段:

class Helloworld {
  public:
    static int x;
    void foo();
};

void Helloworld::foo() {
  Helloworld::x = 10;
}
登入後複製

此程式碼旨在從非靜態方法foo() 存取靜態變數x。但是,編譯此程式碼可能會導致「對靜態變數的未定義引用」錯誤,因為靜態變數 x 缺少定義。

解是在類別定義之外提供靜態變數 x 的定義。這個定義可以加入在類別定義之後,如下所示:

class Helloworld {
  public:
    static int x;
    void foo();
};

// Definition of static variable x
int Helloworld::x = 0; // Initialize x to 0 (or any appropriate value)

void Helloworld::foo() {
  Helloworld::x = 10;
}
登入後複製

透過在類別定義之外定義靜態變數x,編譯器可以為x定位並分配記憶體。此外,將靜態變數初始化為特定值或在沒有初始化器的情況下允許其零初始化也很重要。

透過這些修改,程式碼將成功編譯和執行,使您能夠從 Helloworld 類別的非靜態成員函數存取靜態變數 x。

以上是為什麼在 C 中存取靜態變數時會出現「未定義的靜態變數引用」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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