gpt4 book ai didi

events - C++ cli接口(interface)事件显式实现

转载 作者:行者123 更新时间:2023-12-02 15:48:35 25 4
gpt4 key购买 nike

我正在尝试将 c# 代码转换为 c++/cli。一切都很顺利,直到我开始将接口(interface)事件显式实现转换为 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”之前”

最佳答案

你必须让它看起来像这样:

event MyEventHandler^ Event2 {
virtual void add(MyEventHandler^ handler) = Interface::Event::add {
backingDelegate += handler;
}
virtual void remove(MyEventHandler^ handler) = Interface::Event::remove {
backingDelegate -= handler;
}
};

关于events - C++ cli接口(interface)事件显式实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com