静的クラス変数を使用する場合、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 サイトの他の関連記事を参照してください。