1

どのように?

以下は機能しませんでした:

delegate MyDelegate;
ref class MyDelegate;
delegate void MyDelegate;

宣言には次のように機能します。

public delegate void MyDelegate(Object ^sender, MyArgs ^args);

しかし、それを前方宣言として使用すると、

error C3756: 'MyNameSpace::MyDelegate': delegate definition conflicts with an existing symbol
4

1 に答える 1

1

この作品は私のためのものです。

stdafx.h:

public delegate void Handler(bool isit);

cli1.cpp:

#include "stdafx.h"
using namespace System;

namespace MY {
   namespace Namespace
   {
       public ref class Objeks
       {
           public: Objeks() {}
           public: event Handler^ OnHandler;
           public: void __clrcall Runner(bool checkit)
           {
              if(&Objeks::OnHandler != nullptr) 
                OnHandler(checkit);
           }
       };
   }
}

ほとんどの場合、デフォルトのVS 2010 C ++ / CLIプロジェクトをそのままにしておきました。前方宣言の問題が発生した場合は、名前空間Systemを使用することを期待します。ヘッダーにも入ります:)

たぶんあなたはイベントを使いたくなかったのですか?しかし、それは単に構造のようです。

検討した後にエラーチェックを追加しました(Array :: FindAll()で述語を使用したC ++ / CLIデリゲート呼び出しのコンパイルエラー)。

于 2009-07-18T13:18:52.607 に答える