我想将c#代码转换为C++/cli。一切顺利,直到我开始将接口事件显式实现转换为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中?我花了一些时间在互联网上搜索,但没有遇到任何有用的东西。
UPDATE:下面是一个说明该问题的完整的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””
通常,当你得到了有关错误消息的问题,这是一个好主意,提供该问题的消息。 – 2013-03-14 09:03:00
这里没有用于测试的编译器,但我希望该行读取“虚拟事件EventHandle Interface :: Event”,而不需要其他名称或分配。 – nvoigt 2013-03-14 09:03:25
更新后的帖子与错误信息 – edwabr123 2013-03-14 09:45:55