我想在CLI中将c ++指针字段包装到属性,这是我的代码:
class NativeClass
{
public:
int* nativeApointer;
}
ref class ManagedClass
{
NativeClass* thisClass
property int^ A
{
int^ get()
{
return thisClass->nativeApointer
}
}
}
编译器注意到errror,那么如何将非托管指针转换为内部指针?
答案 0 :(得分:0)
这就像是:
using namespace System::Runtime::InteropServices;
class NativeClass
{
public:
int* nativeApointer;
};
public ref class ManagedClass
{
//NativeClass* thisClass
IntPtr thisClass;
public:
property int A
{
int get()
{
return *((NativeClass*)(void*)thisClass)->nativeApointer;
}
}
};
注意:在这种情况下,我们返回指针所显示位置的值。我不认为int^
或int *
是个好主意。如果大多数指针内容在本机部分完成并且您只将最重要的思想链接到外部世界而不是属性,那可能会更好。