4

ac#クラスでは、次のものがあります。

public class Myclass
{
  public Action<string, string> MyDelegate { get; set;}

  public void CallingAction()
  {
    MyDelegate("string1", "string2");
  }
}

C ++ / Cliで、デリゲートに新しい関数を追加したいと思います。

public ref class MyCliClass
{
  public :
  MyCliClass()
  {
    MyClass^ myClassInstance = gcnew MyClass();
    MyCliDelegate^ myDelegateInstance = gcnew MyCliDelegate(this, &MyCliClass::FunctionToCall);
    myClassInstance->MyDelegate += myDelegateInstance;
  }

  void FunctionToCall(string^ string1, string^ string2)
  {
    // Some stuff to do
  }

  private :
  void delegate MyCliDelegate(string^,string^);
}

これは私にエラーを与えます:

error C3365: operator '+' : differing operands of type 'System::Action<T1, T2> ^' and 'MyCliClass::FunctionToCall^'

「FunctionToCall」をC#デリゲートに追加して、「CallingAction」が呼び出されると「FunctionToCall」も呼び出されるようにするにはどうすればよいですか?

ありがとうございました

編集/回答 これが新しいCLI/クラスです

public ref class MyCliClass
{
  public :
  MyCliClass()
  {
    MyClass^ myClassInstance = gcnew MyClass();
    myClassInstance->MyDelegate += gcnew Action<string^,string^>^(this, &MyCliClass::FunctionToCall);
  }

  void FunctionToCall(string^ string1, string^ string2)
  {
    // Some stuff to do
  }
}
4

1 に答える 1

2

同等のデリゲートタイプは変換できません。
デリゲートインスタンスをとして宣言する必要がありますAction<string^, string^>^

于 2012-10-30T20:08:03.000 に答える