私はネイティブクラスへのポインターを持っていて、それを一時的にObjectにラップしたい。私はSystem :: Reflection :: Pointer :: Box()関数が行く方法だと仮定します。しかし、私はそれに2番目のパラメータをフォーマットするのに問題があります。ボクシングのネイティブC++ポインター
ランタイムエラーが発生すると、「タイプはポインタにする必要があります」と表示されるはずです。しかし、私は構文を理解することはできません。
私はネイティブクラスへのポインターを持っていて、それを一時的にObjectにラップしたい。私はSystem :: Reflection :: Pointer :: Box()関数が行く方法だと仮定します。しかし、私はそれに2番目のパラメータをフォーマットするのに問題があります。ボクシングのネイティブC++ポインター
ランタイムエラーが発生すると、「タイプはポインタにする必要があります」と表示されるはずです。しかし、私は構文を理解することはできません。
私はSystem.Reflection.Pointer.Box
のいずれかを動作させることができませんでしたが、謙虚にしようとしていることを行う機能を見つけましたIntPtr
。
A * a = new A;
Object ^o = gcnew IntPtr(a); // a is boxed in o
IntPtr i = safe_cast<IntPtr>(o); // Unbox the IntPtr
A * aIsBack = static_cast<A*>(i.ToPointer()); // Retrieve a
ありがとうございます。 Box()ほどエレガントではありませんが、前処理ディレクティブでは修正できません。 – Nicholas
これはC++ではなく、C++です。 –
はい。 (えええええええええええええええええええええええええええええええええええええええええええ、15文字の最小値、誰がそれを賞賛しましたか? – Nicholas