■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 を操作するかした方がスマートな気がします。
|
|