ホームページ >バックエンド開発 >C++ >C で「静的変数への未定義の参照」エラーが発生するのはなぜですか?静的メソッドを使用せずにそれを修正するにはどうすればよいですか?

C で「静的変数への未定義の参照」エラーが発生するのはなぜですか?静的メソッドを使用せずにそれを修正するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-19 16:03:09808ブラウズ

Why Do I Get an

C の静的変数への未定義の参照

C で静的変数を使用する場合、開発者はよく「静的変数への未定義の参照」というエラーに遭遇します。 。」この記事では、この問題について調査し、静的メソッドを使用しない解決策を示します。

問題:

次のコードを考えてみましょう:

class Helloworld {
  public:
     static int x;
     void foo();
};
void Helloworld::foo() {
     Helloworld::x = 10;
};

This静的変数 x が非静的メソッド foo() で参照されているため、コードは「未定義参照」エラーをトリガーしますが、定義.

解決策:

この問題を解決するには、クラス定義の外側で静的メンバー変数 x の定義を提供することが不可欠です。これは次のように実現できます。

class Helloworld {
  public:
     static int x;
     void foo();
};

// Define the static variable outside the class
int Helloworld::x = 0;

void Helloworld::foo() {
     Helloworld::x = 10;
};

初期値を 0 に指定するか、未定義のままにすると、x はゼロで初期化されます。あるいは、より適切な初期値を割り当てることもできます。

以上がC で「静的変数への未定義の参照」エラーが発生するのはなぜですか?静的メソッドを使用せずにそれを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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