一般的な考えに反して、クラス定義で静的 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 サイトの他の関連記事を参照してください。