ホームページ >バックエンド開発 >C++ >C で静的 Const Integer メンバーにアクセスすると未定義参照エラーが発生するのはなぜですか?

C で静的 Const Integer メンバーにアクセスすると未定義参照エラーが発生するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-30 21:03:21765ブラウズ

Why Does Accessing a Static Const Integer Member Result in an Undefined Reference Error in C  ?

静的 Const 整数メンバーと未定義参照エラー

C 言語では、整数型のクラス定義内で静的 const メンバーの定義が許可されています。 。ただし、これを最近試みたところ、リンカー エラーが発生しました。具体的には、「test」という名前のクラスが、値 10 の静的 const 整数メンバー「N」を宣言しました。後続の関数で「N」にアクセスして使用しようとすると、コードは未定義の参照エラーで失敗します。

整数型定数の初期化

クラス宣言では、初期値を設定できます。 「N」。これは単なる初期化子であり、完全な定義ではないことに注意してください。 C 標準によれば、静的 const 整数メンバーにはクラス宣言の外で定義が必要です。

参照パラメーターの影響

この場合の原因は、 「std::min」関数。 「std::min」は定数参照によってパラメータを取得するため、「N」が完全に定義されている必要があります。 「N」の個別の定義がないと、未定義の参照エラーが発生します。

エラーの回避

この問題を解決するには、「N」を定義する必要があります。クラス宣言の外で指定する必要があります。これは、別の名前空間またはヘッダー ファイルで「N」を宣言して初期化することで実現できます。さらに、「constexpr」キーワードを使用して、「N」がコンパイル時に確実に評価されるようにすると有益な場合があります。

結論

で発生したリンカー エラーこのインスタンスは、静的 const 整数メンバー「N」の不完全な定義から生じています。初期化と定義の違いを理解し、参照パラメータのニーズに対処することで、この問題を効果的に修正できます。

以上がC で静的 Const Integer メンバーにアクセスすると未定義参照エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。