在類別定義中定義靜態常數整數成員:探索
C 允許在類別定義中宣告靜態常數整數成員。然而,理解這種情況下初始化和定義之間的區別至關重要。
在提供的範例程式碼中:
class test { public: static const int N = 10; };
類別中 N 的聲明將其初始化為值10. 然而,這並不等同於定義。要解決遇到的連結器錯誤,需要在類別定義之外單獨定義 N。這可以透過命名空間範圍定義來實現,例如:
const int test::N = 10;
或者,constexpr 關鍵字可用於在一個步驟中聲明和定義靜態const 整數成員,從而無需單獨的定義:
class test { public: static constexpr int N = 10; };
在呼叫std::min 的情況下,它期望透過引用傳遞參數。由於 N 被聲明為靜態常數整數,因此需要對其進行定義以通過引用要求。註解掉對 std::min 的呼叫允許程式碼編譯,因為不再需要 N 的定義,儘管它仍然被引用。
總而言之,而 C 允許在內部初始化靜態 const 整數成員類別定義中,需要單獨的定義來引用該值。這可以透過命名空間範圍定義或使用 constexpr 關鍵字來實現。
以上是如何在 C 中正確定義靜態常數整數類別成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!