1

クライアントコードで定義されたクラス内からクライアントコードメソッドをどのように呼び出しますか?

たとえば、特定のアドレスにあるプロセスのメモリから値を読み取ることができるメモリ読み取りクラスがあります。また、メモリから読み取られるデータの種類を管理するためのクラスもあります(ゲーム内の「オブジェクト」について読んでいます。「クライアントコード」では、メモリ内のそのオブジェクトの「ベースアドレス」を計算してから初期化します。 'ベースアドレス'をパラメータとして受け取るコンストラクタを使用する'オブジェクトクラス' 、「健康」など)

このようなコードを使ってみたところ、エラーが発生しました。「ObjectManager」は、メモリから値を読み取ることができるクラスです。

class ObjectManager : Memory
{
    LocalCharacter LocalPlayer = new LocalCharacter(this);
    // other things omitted
}
// Error: Keyword 'this' is not available in the current context

そしてこれは、必死から:

class ObjectManager : Memory
{
    LocalCharacter LocalPlayer = new LocalCharacter(ObjectManager);
    // other things omitted
}
// Error: Keyword 'this' is not available in the current context

しかし、役に立たない。これを行うための最良の方法は何ですか?

4

2 に答える 2

10

コンストラクターで「this」を参照するのはどうですか:-

class ObjectManager : Memory
{
    ObjectManager()
    {
        LocalPlayer = new LocalCharacter(this);
    }

    LocalCharacter LocalPlayer;
    // other things omitted
}
于 2009-01-27T09:47:17.407 に答える
0

あなたは方法にいないからです。

これにアクセスするには、メソッドを宣言する必要があります。メイン関数が呼び出しを呼び出します。

クラス レベル フィールドを設定する場合は、コンストラクターで行う必要があります。ただし、クラス定義で変数を宣言します(メソッドではありません)

class ObjectManager : Memory
{
   public void mymethod()
   {
      LocalCharacter LocalPlayer = new LocalCharacter(this);
   }
}
于 2009-01-27T09:48:23.677 に答える