我正在尝试构建一个 cli/c++ ref 类。此类的目的是包装具有某些功能的本机类指针。本机类指针由黑盒工厂方法提供给我。对于我的生活,我无法弄清楚如何固定本机指针使其不动。这是代码中的场景(可以这么说):
public ref class ManagedFoo{
private:
NativeFooClass* myFoo;
public:
ManagedFoo(){
NativeFooFactory factory();
NativeFooClass* nativePtr = factory.CreateFoo();
//here is where i get lost
//create a pined pointer to the nativePtr
pin_ptr<NativeFooClass*> pinPtr = &nativePtr;
//tring to assign pinPtr to the mamaber var= compilation faliuer
myFoo = pinPtr;
}
}
我不断收到:错误 C2440:'=':无法从 'cli::pin_ptr' 转换为 'NativeFooClass*'
我以为编译器对待它们是一样的?我需要静态转换吗?好像不对???
我试图固定这个指针的原因是因为当我尝试在一个方法中使用它,然后从 C# 调用这个方法时,我得到一个 AccessViolation 运行时错误“{”试图读取或写入受保护的内存。这通常表明其他内存已损坏。"}"