Я пытаюсь преобразовать код С# в С++/cli. Все шло гладко, пока я не начал переводить явные реализации интерфейсных событий в синтаксис C++/cli.
Скажем, в С# у меня есть этот интерфейс
public interface Interface
{
public event MyEventHandler Event;
}
Который реализован в классе явным образом, поэтому он не конфликтует с другим членом по его имени:
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". Кто-нибудь знает, что такое правильный синтаксис, или он даже существует в С++/cli? Я потратил некоторое время на поиски в Интернете, но не нашел ничего полезного.
ОБНОВЛЕНИЕ: Вот полный код С++/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'"