ホームページ >バックエンド開発 >C++ >「オブジェクト参照が必要です」エラーの原因と解決方法は何ですか?

「オブジェクト参照が必要です」エラーの原因と解決方法は何ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-27 02:07:10652ブラウズ

What Causes the

「オブジェクト参照が必要です」エラーについて

オブジェクト指向プログラミングでは、インスタンス変数やメソッドなどの非静的メンバーには、オブジェクト インスタンスが必要です。アクセスされました。最初にオブジェクトを作成せずにこれらの非静的メンバーにアクセスしようとすると、「非静的メンバーにアクセスするにはオブジェクト参照が必要です。」というエラーが発生します。

静的メンバーによるエラーの解決

このエラーを解決する 1 つの方法は、影響を受けるメンバーを静的にすることです。静的メンバーは、個々のオブジェクトではなく、クラス自体に関連付けられます。これは、オブジェクト インスタンスなしでアクセスできることを意味します。

たとえば、指定したコード スニペットでは、StartClick メソッドと StopClick メソッドは非静的です。このエラーを修正するには、これらのメソッドを次のように変更できます。

public static void StartClick(object obj, EventArgs args) {}
public static void StopClick(object obj, EventArgs args) {}

ただし、これによりアプリケーションにグローバルな状態が導入されることになり、一般的に良い方法とは考えられていません。

オブジェクトの作成Instance

エラーを解決するもう 1 つの方法は、クラスのインスタンスを作成することです。これにより、インスタンス参照を通じて非静的メンバーにアクセスできるようになります。

たとえば、StartClick メソッドと StopClick メソッドにアクセスする前に、次のコードを追加できます。

MainClass instance = new MainClass();
btn.Clicked += instance.StartClick;
btn_stop.Clicked += instance.StopClick;

インスタンスを作成することによってMainClass の、非静的メンバーへのアクセスに使用できるオブジェクト参照があります。

結論

静的メンバーまたはオブジェクト インスタンスを使用するかどうかは、アプリケーションの特定の要件によって異なります。グローバル状態を回避することが重要な場合は、オブジェクト インスタンスを作成することをお勧めします。これにより、コードのカプセル化とテスト容易性が向上します。

以上が「オブジェクト参照が必要です」エラーの原因と解決方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。