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

C の非静的メソッドから静的クラス変数にアクセスすると、未定義の参照が発生するのはなぜですか?

Linda Hamilton
リリース: 2024-12-27 05:31:13
オリジナル
278 人が閲覧しました

Why Does Accessing a Static Class Variable from a Non-Static Method in C   Cause an Undefined Reference?

非静的メソッドから静的クラス変数にアクセスする

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 サイトの他の関連記事を参照してください。

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