私はc#コードをc ++/cliに変換しようとしています。インターフェイスイベントの明示的な実装をc++/ cli構文に変換し始めるまで、すべてがスムーズに進みました。
C#で私がこのインターフェースを持っているとしましょう
public interface Interface
{
public event MyEventHandler Event;
}
これは明示的な方法でClassに実装されているため、名前で他のメンバーと競合しません。
public interface Class : Interface
{
event MyEventHandler Interface.Event;
public event AnotherEventHandler Event;
}
私は次のようにクラスをc++/cliに変換しようとしています:
public ref class Class : public Interface
{
virtual event MyEventHandler^ Event2 = Interface::Event
{
}
...
};
これはコンパイルされず、「... = Interface::Event」の部分で構文エラーが発生します。誰かが正しい構文が何であるかを知っていますか、それともc ++ / cliに存在しますか?私はインターネットで検索するのにしばらく時間を費やしましたが、何か役に立つものにぶつかることはできませんでした。
更新:問題を示す完全なc ++/cliコードは次のとおりです。
public delegate void MyEventHandle();
public delegate void AnotherEventHandle();
public interface class Interface
{
event MyEventHandler^ Event;
};
public ref class Class : public Interface
{
public:
virtual event MyEventHandler^ Event2 = Interface::Event
{
virtual void add(MyEventHandle^) {}
virtual void remove(MyEventHandle^) {}
}
event AnotherEventHandler^ Event;
};
VC ++ 2012によって出力されるエラーは、「エラーC2146:構文エラー:欠落している';」です。識別子の前'MyEventHandler' "