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

C で静的変数にアクセスすると「静的変数への未定義の参照」エラーが発生するのはなぜですか?

Susan Sarandon
リリース: 2024-12-30 01:12:16
オリジナル
421 人が閲覧しました

Why Do I Get

C での静的変数参照の問題

C では、静的変数が静的でない場合、非静的クラス メソッド内で静的変数にアクセスするとコンパイル エラーが発生する可能性があります。変数が正しく定義されていません。よく発生するエラーの 1 つは、「静的変数への未定義の参照」です。

問題

次のコード スニペットを考えてみましょう。

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

void Helloworld::foo() {
  Helloworld::x = 10;
}
ログイン後にコピー

このコード非静的メソッド foo() から静的変数 x にアクセスすることを目的としています。ただし、このコードをコンパイルすると、静的変数 x に定義がないため、「静的変数への未定義の参照」エラーが発生する可能性があります。

解決策

解決策は次のとおりです。クラス定義の外で静的変数 x の定義を提供します。以下に示すように、定義はクラス定義の後に追加できます。

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

// Definition of static variable x
int Helloworld::x = 0; // Initialize x to 0 (or any appropriate value)

void Helloworld::foo() {
  Helloworld::x = 10;
}
ログイン後にコピー

クラス定義の外で静的変数 x を定義することにより、コンパイラーは x にメモリを見つけて割り当てることができます。さらに、静的変数を特定の値に初期化するか、初期化子がない場合にゼロで初期化できるようにすることが重要です。

これらの変更により、コードは正常にコンパイルおよび実行され、次のことが可能になります。 Helloworld クラスの非静的メンバー関数から静的変数 x にアクセスします。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート