對靜態成員的未定義引用:初學者指南
靜態資料成員通常用於在類別的實例之間共享資訊。然而,開發人員在使用靜態資料成員時偶爾會遇到「未定義的引用」錯誤。這個問題是由於聲明和定義之間的區別而產生的。
理解宣告和定義
宣告向編譯器介紹變數的存在,而不指定其記憶體位置。另一方面,定義為變數分配記憶體並提供其位址。
對於靜態資料成員,它們的聲明發生在類別定義中,但不為它們分配地址。實際的定義必須單獨提供。
定義靜態資料成員
要解決「未定義引用」錯誤,請在類別定義之外明確定義靜態資料成員,通常在實作檔案(. cpp)。例如,考慮以下程式碼:
// Header file (.h) class Example { static bool exampleStaticMember; }; // Implementation file (.cpp) bool Example::exampleStaticMember;
整數和枚舉類型的異常
整數或枚舉類型的靜態資料成員可以直接在類別中初始化定義:
class Example { static const int initialized = 15; };
在在這種情況下,實作檔案中的定義必須省略初始化器:
const int Example::initialized;
模板中的靜態資料成員
對於模板,靜態資料成員與類別聲明一起在頭檔中定義。單一定義規則的例外允許類別模板的靜態資料成員的多個定義。
「static」的其他用途
超出類別範圍,「static」具有附加意義:
以上是為什麼 C 中的靜態成員會出現「未定義引用」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!