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

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

Patricia Arquette
リリース: 2024-12-15 11:46:10
オリジナル
954 人が閲覧しました

Why Am I Getting an

C での「静的変数への未定義の参照」エラーの解決

静的クラス変数を使用する場合、C で「静的変数への未定義の参照」エラーが発生する場合があります。 。この記事では、この問題を調査し、解決策を提供します。

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

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

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

このコードをコンパイルすると、「'Helloworld への未定義の参照」というエラーが表示される場合があります。 ::x'」。これは、静的変数 x の定義を指定していないためです。

C では、静的クラス変数はクラス定義の外で定義する必要があります。グローバル スコープに x の定義を追加するだけで、次のエラーが解決されます。

int Helloworld::x; // Define the static variable
ログイン後にコピー

x を任意の適切な値で初期化できます。初期化子が指定されていない場合、デフォルトでゼロ初期化されます。

したがって、変更されたコードは次のようになります。

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

int Helloworld::x = 0; // Initialize the static variable

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

これで、コンパイラーは正しく位置を特定できるようになります。 x の定義を確認し、エラーを解決します。 foo() 関数は静的ではありませんが、Helloworld クラスの静的変数 x にはアクセスできることに注意してください。

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

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