cli / C ++, как определить cli :: array с элементом неуправляемого типа? - PullRequest
2 голосов
/ 12 сентября 2010

У меня есть собственная структура 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, как сделать так, чтобы вышеуказанный код работал?

большое спасибо

1 Ответ

4 голосов
/ 12 сентября 2010

Тип элемента управляемого массива должен быть управляемого типа.Один из обходных путей - указатели магазина:

array<AStruct*>^ args=gcnew array<AStruct*>(2);
args[0] = new AStruct;
// etc...

UpdateDataDelegate^ dlg = gcnew UpdateDataDelegate(Mumble);
dlg->Invoke(*args[0], *args[1]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...