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

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

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

Re[3]: COM のキャストについて


(過去ログ 88 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■52555 / inTopicNo.1)  COM のキャストについて
  
□投稿者/ 雲 (25回)-(2010/08/14(Sat) 21:25:31)

分類:[C/C++] 

Windows Imaging Component を使ってみようと、いろいろと、試していますが
COM のキャストがわからなくなってしまいました。

具体的には、IWICBitmap を IWICBitmapSource へキャストをしたいのですが、
単純に、

IWICBitmap *bitmap = (何か代入);

としてあったときに、

(IWICBitmapSource)bitmap

などとして良いのでしょうか?

(※)↓ココをみると、IWICBitmap は、IWICBitmapSource を継承していると書いてあるので、C++の継承から判断すると正しいような気がします(Inside COM を斜め読みした感じではダメとはかかれていないような)。
http://msdn.microsoft.com/en-us/library/ee719675(v=VS.85).aspx

あと、もし、これが正しいとして、

_COM_SMARTPTR_TYPEDEF( IWICBitmap, __uuidof(IWICBitmap) );

で、_com_ptr_t を使っているときにも、単純にIWICBitmapSourceにキャストして良いのでしょうか?
(何となく、こちらはReleaseを呼べなくなるのでダメな感じがします。IWICBitmapSourcePtr へキャストすればよい?)

よろしくお願いします。

引用返信 編集キー/
■52558 / inTopicNo.2)  Re[1]: COM のキャストについて
□投稿者/ 渋木宏明 (43回)-(2010/08/15(Sun) 01:01:33)
渋木宏明 さんの Web サイト
2010/08/15(Sun) 02:22:33 編集(投稿者)

> 具体的には、IWICBitmap を IWICBitmapSource へキャストをしたいのですが、
> 単純に、
>
> IWICBitmap *bitmap = (何か代入);
>
> としてあったときに、
>
> (IWICBitmapSource)bitmap
>
> などとして良いのでしょうか?

一般論としてはダメです。
QI してください。

> (※)↓ココをみると、IWICBitmap は、IWICBitmapSource を継承していると書いてあるので、

「COM の原理や仕組み、サーバの実装まで分かっていて省略する」のであれば、大丈夫な場合もあるにはあります。
ですが、原則は「QI する」です。

COM における「キャスト」相当の操作は QI なのです。

引用返信 編集キー/
■52560 / inTopicNo.3)  Re[2]: COM のキャストについて
□投稿者/ 雲 (26回)-(2010/08/15(Sun) 05:24:39)
> 「COM の原理や仕組み、サーバの実装まで分かっていて省略する」のであれば、大丈夫な場合もあるにはあります。
> ですが、原則は「QI する」です。
>
> COM における「キャスト」相当の操作は QI なのです。

了解しました。まだまだ、COM は使い方が何となくわかった(ような気がする)。
レベルなので、手を抜くのはサーバーの実装まで理解できてから。ということですね。

(※)たまたま、同じことが書いてあるところを見つけました。
http://www.noppi.jp/diary/?date=20060313
解決済み
引用返信 編集キー/
■52562 / inTopicNo.4)  Re[3]: COM のキャストについて
□投稿者/ 渋木宏明 (45回)-(2010/08/15(Sun) 09:36:32)
渋木宏明 さんの Web サイト
2010/08/15(Sun) 22:53:28 編集(投稿者)
2010/08/15(Sun) 10:27:25 編集(投稿者)

>手を抜くのはサーバーの実装まで理解できてから。ということですね。

「本来は間違いだけど、動くこともある」の方が正確かもしれません。
まぁ、ほぼ反則です。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -