我有一个原生的C / C ++结构
typedef struct
{
...
} AStruct;
在C ++ / CLI代码中,我定义了一个委托和一个cli数组,如下所示
public delegate void UpdateDataDelegate(AStruct% aSt,AStruct% bSt);
cli::Array<AStruct>^ args=gcnew cli::Array<AStruct>(2); // complile failed!!!!。
this->Invoke(updateData,args);
AStruct
有很多字段,并且被许多模块使用,所以如果我不想为AStruct
编写一个mananged wrap,那么如何使上面的代码有用呢?
答案 0 :(得分:4)
托管数组的元素类型必须是托管类型。一种解决方法是存储指针:
array<AStruct*>^ args=gcnew array<AStruct*>(2);
args[0] = new AStruct;
// etc...
UpdateDataDelegate^ dlg = gcnew UpdateDataDelegate(Mumble);
dlg->Invoke(*args[0], *args[1]);