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 ランタイム エラー "{"Attempted to read or write protected memory. これは多くの場合、他のメモリが破損していることを示しています。"}"