我正在尝试将 c# 代码转换为 c++/cli。一切都很顺利,直到我开始将接口事件显式实现转换为 c++/cli 语法。
假设在 C# 中我有这个接口
public interface Interface
{
public event MyEventHandler Event;
}
它以显式方式在类中实现,因此它的名称不会与其他成员冲突:
public interface Class : Interface
{
event MyEventHandler Interface.Event;
public event AnotherEventHandler Event;
}
我正在尝试将 Class 转换为 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”之前”