我需要在c ++ / cx中捕获一个lambda表达式,并将其作为参数传递给public ref class MyClass sealed
组件类。我尝试使用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".
我没有得到它......你应该如何传递函数,它会是什么样的?
答案 0 :(得分:1)
如果您的MyCallback类型是托管代理,则必须指定您接受该类型的托管引用:
void
attach (
byte cmd_,
MyCallback^ cb_
);
注意 ^
标志。如果没有此标志,您将看到一个奇怪的错误:a delegate type is not allowed here
。这个标志的字面意思是a managed reference of type ...
。