cli / C ++如何使用非托管类型元素定义cli :: array?

时间:2010-09-12 12:01:03

标签: c++-cli

我有一个原生的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,那么如何使上面的代码有用呢?

非常感谢

1 个答案:

答案 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]);
相关问题