c++/cx - Error: a delegate type is not allowed here

c++/cx - Error: a delegate type is not allowed here

我需要在 c++/cx 中捕获一个 lambda 表达式并将其作为参数传递给 public ref class MyClass sealed 组件 class。我尝试使用 std::function,但编译器抱怨 signature of public member contains native type 'std::func...

一直在看啊看,public delegate void MyCallback(byte, byte, byte *)貌似可以代替typedef std::function<void(byte, byte, byte *)> MyCallback;

我试过用它作为参数:

void
attach (
    byte cmd_,
    MyCallback cb_
);

但是,Intellisense 给我错误:"Error: a delegate type is not allowed here".

我不明白...你应该如何传递函数,它看起来像什么?

如果您的 MyCallback 类型是托管委托,那么您必须指定您正在接受该类型的托管引用:

void
attach (
    byte cmd_,
    MyCallback^ cb_
);

注意 ^ 符号。没有这个标志你会看到一个奇怪的错误:a delegate type is not allowed here。这个符号的字面意思是 a managed reference of type ....