首頁 >後端開發 >C++ >為什麼靜態常數整數成員需要在 C 中單獨定義?

為什麼靜態常數整數成員需要在 C 中單獨定義?

Susan Sarandon
Susan Sarandon原創
2024-12-10 07:12:10817瀏覽

Why Do Static Const Integer Members Require Separate Definitions in C  ?

在類別定義中定義靜態常數整數成員

與流行的看法相反,在類別定義中初始化靜態常數積分不足以產生所需的必要定義通過其他代碼。從提供的程式碼報告的編譯錯誤可以看出,仍然強制需要單獨定義:

#include <algorithm>
#include <iostream>

class test
{
public:
    static const int N = 10;
};

int main()
{
    std::cout << test::N << "\n";
    std::min(9, test::N); // Error: Undefined reference to `test::N'
}

這個問題源自於 std::min 的參數取得機制:它透過 const 引用捕獲值。如果按值獲取,則不需要單獨定義。

解決方法

雖然在類別外部定義靜態 const 成員可以解決問題,但有一個更好的解決方案:使用 constexpr 關鍵字。這消除了單獨定義的需要並處理其他邊緣情況。

class test
{
public:
    static constexpr int N = 10;
};

以上是為什麼靜態常數整數成員需要在 C 中單獨定義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn