ホームページ >バックエンド開発 >C++ >C で静的クラス メンバーを使用すると「未定義の参照」が発生するのはなぜですか?

C で静的クラス メンバーを使用すると「未定義の参照」が発生するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-11 03:07:08803ブラウズ

Why Do I Get

静的クラス メンバーへの未定義の参照

C では、クラス内で定義された静的メンバーはコンパイル エラーを避けるために適切な処理が必要です。

未定義の理由参照

静的メンバーは、クラス定義内で宣言されているにもかかわらず、他の場所で明示的に行われない限り、自動的には定義されません。これは、宣言が C の定義とは異なるためです。宣言は単にメンバーを導入するだけですが、定義はメモリを割り当てて初期値を提供します。

宣言されていない静的メンバーを持つ次のクラスを考えてみましょう。

class Example {
    static bool exampleStaticMember;
};

exampleStaticMember を定義せずに使用しようとすると、「未定義の参照」が発生します。エラー。

定義要件

この問題を解決するには、静的メンバーを、通常はクラス定義を含むソース ファイル (.cpp) で明示的に定義する必要があります。この定義では、データ型とセミコロン (';') を使用してメンバーを再度宣言するだけです。

bool Example::exampleStaticMember;

特殊なケース

  • Const整数/列挙静的メンバー: これらはクラス定義内で初期化できます。
  • 静的テンプレート メンバー: クラス テンプレートの静的メンバーはヘッダー ファイルでの定義が必要です。

その他の静的使用法

静的キーワードは、外部で適用される場合には異なる意味を持つことに注意してください。クラス:

  • 関数内の静的オブジェクト: 関数呼び出し間で値を保持するオブジェクトを宣言します。
  • 名前空間スコープ内の静的オブジェクト/関数: 内部リンケージを使用してオブジェクト/関数を宣言します。

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

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