• ベストアンサー

void*の型キャストについて質問です

VisualStudio 2008 を使ってOpenCVを勉強中なのですが、 … IplImage *dst; … cvRelease(&dst); をすると、 error C2664: 'cvRelease' : 1 番目の引数を 'IplImage **__w64 ' から 'void **' に変換できません。(新しい機能 ; ヘルプを参照) と出ます。 確か、void*はどの型からでも明示型キャストは必要なかったと思うのですが、これはVisual Studio 2008 の仕様ですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス >確か、void*はどの型からでも明示型キャストは必要なかったと思うのですが、 >これはVisual Studio 2008 の仕様ですか?  ↑  C言語ではキャストしなくても良い。  C++言語ではキャストしないといけない。  C/C++のどちらでコンパイルしていますか?  VC2008の仕様より言語仕様と思います。  確認して下さい。

natsutake
質問者

お礼

>C/C++のどちらでコンパイルしていますか? C++でした。 試しにCでコンパイルしたところエラー無しでした。 ありがとうございます。

その他の回答 (1)

回答No.2

C++でも任意のポインタから void * へは暗黙の型変換が可能です。 でも、void** は、void * ではありません。 ということです。 ちなみに、Cだと、void ** へも暗黙の型変換できてしまうようです。

関連するQ&A