C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 53 を表示中)
■29290 / )  Re[1]: C++/CLI ハンドル変数について
□投稿者/ Hongliang (320回)-(2008/12/07(Sun) 14:01:01)
ネイティブな C++ でも、その(ハンドルをポインタに置き換えたような)コードでは実行時エラーになると思いますが。

m_bmp と bmp は、呼び出し時に参照がコピーされるので同じインスタンスを参照していますが、別々の変数です。
新しいインスタンスを作って参照するようにすれば、当然 m_bmp と bmp は別々のインスタンスを参照することになります。

ネイティブな C++ でも、ポインタ自体の変更を呼び出し元に伝えたい場合、ポインタのポインタやポインタの参照を渡すでしょう。
C++/CLI においてハンドルのハンドルは使用できないので、ハンドルの参照を渡すことになります。ネイティブの参照と区別してトラッキング参照と呼ばれます(GC が追跡できる参照なので"トラッキング")。使用する記号も、ネイティブの参照 & から % に置き換えられています。

でも普通に関数では Bitmap^ を返して Load の中で代入するか、関数自身が直接 m_bmp を操作するかした方がスマートな気がします。
返信 編集キー/


管理者用

- Child Tree -