C では、静的メンバー変数は、オブジェクト インスタンスから独立して存在するクラス変数です。 。通常、これはコンパイル時に初期化され、クラスのすべてのインスタンスで共有できます。
ただし、定義を指定せずに静的メンバー変数を宣言すると、コンパイラーは「未定義の参照」に関するエラー メッセージを生成します。 。」これは、コンパイラが静的変数にアクセスするコードを生成するために静的変数のメモリ位置を知る必要があるためです。
このエラーを解決するには、ソース ファイルで静的メンバー変数の定義を提供する必要があります ( .cpp ファイル)。定義はヘッダー ファイル (.h ファイル) の宣言と同じ名前にする必要がありますが、その前にスコープ演算子 (::) を付ける必要があります。例:
// header file class Example { public: static int x; }; // source file int Example::x;
これにより、静的変数 x のメモリ位置が定義され、コンパイラがそれにアクセスするコードを生成できるようになります。
特殊なケース
static のその他の使用法
static キーワードは、クラス スコープにないオブジェクトまたは関数に適用される場合、異なる意味を持ちます:
以上がC での「静的メンバーへの未定義の参照」エラーの原因とその解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。