0

考虑 c++ 中的以下结构,我需要使用 CLI 包装它以使其可用于 C#

typedef struct A
{
    int b[5];
    A* next;
};

我该怎么做?请帮忙。

非操作编辑:

我尝试过的是以下内容:

  public ref struct ANET 
    {
        array<int>^ b;
        ANET^ next;         
        ANET()
        { b = gcnew array<int>(5) } 
    };

现在假设我们有一个 A 对象的指针是 a,ANET 对象的指针是 aNET

nSize = sizeof(a->b)/sizeof(a->b[0]);
Marshal::Copy( IntPtr( ( void * ) a->b ), aNET->b, 0, nSize);

到目前为止,我能够在 aNET->b 中获得 a->b 的值,但我坚持将 a->next 的指针编组到 aNET->next。

谢谢

4

1 回答 1

1

那是一个链表。因此,一种选择是编写 C++/CLI 代码以使本机链表适应 .net LinkedList<T>。沿着这条路线走意味着您需要在本机代码中修改列表并需要返回到托管代码时制作列表的副本。反之亦然。

如果制作副本不是一种选择,那么您应该将本机链表包装在托管类中。因此,您根本不会尝试转换结构定义。相反,您编写一个 C++/CLI 托管类来封装您需要公开的功能。我不能说更多,因为您没有提供有关您需要在此列表中执行的操作的任何信息。现在您已经解释了数据流是什么。

于 2012-12-31T12:20:07.787 回答