c ++ / cx - 错误:此处不允许委托类型

时间:2015-02-19 08:09:49

标签: lambda delegates c++-cx

我需要在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".

我没有得到它......你应该如何传递函数,它会是什么样的?

1 个答案:

答案 0 :(得分:1)

如果您的MyCallback类型是托管代理,则必须指定您接受该类型的托管引用:

void
attach (
    byte cmd_,
    MyCallback^ cb_
);

注意 ^ 标志。如果没有此标志,您将看到一个奇怪的错误:a delegate type is not allowed here。这个标志的字面意思是a managed reference of type ...