我将一个C#对象数组传递给托管C DLL. C#类定义如下:
public class LatLonPointType { public double Lat; // Latitude. public double Lon; // Longitude. }
我将一个LatLonPointTypes数组传递给托管C DLL中的函数.通过反复试验,我发现我可以使用声明为的函数参数将其传递给C函数:
array <LatLonPointType^> ^polygonPoints
以下C代码将提取LatLonPointType ^类型的元素.
LatLonPointType ^a = polygonPoints[0];
我的问题是:
>我多年前使用过C,这似乎与参考声明相似. ^有一个很好的参考?
>在上面的示例中,如何将(LatLonPointType ^)转换为(LatLonPointType)值?
澄清:
如果我有:
LatLonPointType ^a = polygonPoints[i];
我怎么会得到a.Lat和a.Lon?
我会使用a-> Lat和a-> Lon?
解决方法
根据
this answer,这个帽子角色,也就是^,创建了一个托管指针,它将被垃圾收集,不一定是你.例如,如果您要使用new创建本机对象,它将如下所示:
Object* obj = new Object();
但是,如果您要使用托管指针,则语法将更改为:
MObject^ mobj = gcnew MObject();
目前,我找不到如何将托管指针转换为对象本身,但如果要将其转换为指向该对象的非托管指针,请参阅this answer.
编辑
要访问类的成员,例如Lon,您可以这样做:
//Get method double i = polygonPoints[n]->Lon; //Set method polygonPoints[n]->Lon = number;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。