非静的メソッドから静的クラス変数にアクセスする
C で、静的変数への未定義の参照が発生した場合 (例:与えられたコード スニペットの場合、問題は通常、その変数の定義が欠如していることにあります。
提供されている例では、コードが非静的メソッド foo 内から静的変数 x にアクセスしようとしていますが、foo は静的関数ではないことに注意することが重要です。したがって、この問題を解決するには、Helloworld::x の定義をクラス定義の外側で提供する必要があります。
int Helloworld::x = 0; // Provide an initial value or leave uninitialized
静的変数が定義されると、非静的メソッド foo はその変数にアクセスして変更できます。 foo 自体が静的である必要はありません。
void Helloworld::foo() { Helloworld::x = 10; }
静的メンバー変数の定義を提供することにより、コンパイラはそのメモリ アドレスを特定し、未定義のアドレスを解決できます。参照。
以上がC の非静的メソッドから静的クラス変数にアクセスすると、未定義の参照が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。