ホームページ > バックエンド開発 > C++ > C で静的 Const 整数メンバーに個別の定義が必要なのはなぜですか?

C で静的 Const 整数メンバーに個別の定義が必要なのはなぜですか?

Susan Sarandon
リリース: 2024-12-10 07:12:10
オリジナル
788 人が閲覧しました

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

クラス定義での静的 Const 整数メンバーの定義

一般的な考えに反して、クラス定義で静的 const 整数を初期化するだけでは、必要な定義を生成するには十分ではありません。他のコードで。提供されたコードによって報告されたコンパイル エラーでわかるように、別個の定義は依然として必須です:

#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 で静的 Const 整数メンバーに個別の定義が必要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート