Class のメソッドをデリゲート

デリゲート(委譲)に Class のメソッドを登録します。

前田稔の超初心者のプログラム入門

プログラムの説明

  1. Cpp/CLI のデリゲート(委譲)に Class のメソッドを登録してみましょう。
    C# ではOKなのに、メソッドに static 宣言しないとエラーになります。 (^_^;)
    デリゲート(委譲)の基礎は Delegate の基礎 を参照して下さい。
  2. デリゲート(delegate)を用いて、メソッドの形式(タイプと引数)を定義します。
    呼び出すメソッドは int 型で、二個の int 型の引数を受け取ります。
    delegate int TestDelegate( int x, int y );
  3. デリゲートから呼び出されるメソッドを method() を定義した Class です。
    method() に static 宣言をしないとエラーになります。
        ref class Class1
        { public:
            static int method(int x, int y)
            {
                Console::WriteLine("method が呼ばれました");
                return x*y;
            }
        };
        
  4. Class1 を生成して、デリゲートに method を登録します。
    登録するメソッドは、型と引数が一致していなければなりません。
        Class1^ class1 = gcnew Class1();
        TestDelegate^ testdelegate = gcnew TestDelegate(&class1->method);
        
  5. デリゲートを通じてメソッドを呼び出します。
        int result = testdelegate(3,4);
        Console::WriteLine("testdelegate(3,4)= {0}", result);
        
  6. static 宣言されたメソッドなら、Class を生成しなくても登録することが出来ます。
        TestDelegate^ testdelegate = gcnew TestDelegate(&Class1::method);
        int result = testdelegate(3,4);
        

前田稔(Maeda Minoru)の超初心者の C++