静的定数参照を関数に渡すと「未定義の参照」エラーが発生するのはなぜですか?

Barbara Streisand
リリース: 2024-10-30 18:46:03
オリジナル
581 人が閲覧しました

Why do I get

静的定数参照を含む未定義の参照

const int & などの静的定数への参照を含む関数を実装する場合。 a、コンパイラで「未定義の参照」エラーが発生する可能性があります。このエラーは、定数が静的として宣言されているにもかかわらず、関数が呼び出されるコンテキストで定数が定義されていないことが原因で発生します。

C 標準 (9.4.2/4) によれば、静的const 整数型のデータ メンバーは、その宣言内で constant-initializer を使用して初期化できます。ただし、関数パラメーターで使用する場合、定数参照で渡すことは (3.2/2 に従って) それを「使用」することになり、名前空間スコープ内でその定義の要件がトリガーされます。

提供された例では、静的定数 kConst は、関数 foo の行 foo(kConst) で使用されます。定数がどこにも定義されていないため、コンパイラは未定義のオブジェクトへの参照を作成しようとします。これを解決するには、開発者は、例で提案されている解決策で示されているように、kConst の定義を提供するか、定数を値で渡す (一時的なオブジェクトの作成を強制する) 必要があります。

GCC では、定数を値で渡すことができる場合があります。 (static_cast(kConst) 経由)、参照渡しでは標準に厳密に従います。このエラーは、静的定数を定義するか、定数参照を受け取る関数に渡すときに静的定数を値で使用することを思い出させるものとして機能します。

以上が静的定数参照を関数に渡すと「未定義の参照」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!