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

  显示原文与译文双语对照的内容

我有本机 C/C++ 结构


typedef struct


{


...


} AStruct;



在 C++/CLI 代码中,我定义了一个委托和一个 cli array,如下所示


public delegate void UpdateDataDelegate(AStruct% aSt,AStruct% bSt);



cli::Array<AStruct>^ args=gcnew cli::Array<AStruct>(2);//complile failed!!!!。



this->Invoke(updateData,args);



AStruct 有许多字段,由许多模块使用,如果我不喜欢写mananged包,如何使上面的代码工作。

非常感谢

时间: 原作者:

托管 array的元素类型必须是托管类型。 一个解决办法是存储指针:


array<AStruct*>^ args=gcnew array<AStruct*>(2);


args[0] = new AStruct;


//etc...



UpdateDataDelegate^ dlg = gcnew UpdateDataDelegate(Mumble);


dlg->Invoke(*args[0], *args[1]);



原作者:
...