VariantCopy メソッドを使用しているときに、次のコンパイル エラーが発生します。
error C2664: 'VariantCopy' : cannot convert parameter 2 from 'const VARIANT *' to 'VARIANTARG *'
このエラーを解決する方法はありますか? プリプロセッサ ディレクティブまたはライブラリを含める必要がありますか?
問題は、メソッドが異なるさまざまな Windows SDK にあったため、問題が発生しました。
VariantCopy
かつての署名
HRESULT VariantCopy(
VARIANTARG FAR* pvargDest,
VARIANTARG FAR* pvargSrc
);
奇妙ですが、入力パラメーターが const ではないため、コードでそのことに注意する必要があります。
MSDN のドキュメントで理由が説明されています。関数は変更される可能性がありますpvargSrc
pvargSrc が VT_DISPATCH または VT_UNKNOWN の場合、オブジェクトの参照カウントをインクリメントするために AddRef が呼び出されます。
アップデート
最新の SDK では、2 番目のパラメーターが になりましconst
た。ただし、MFC ソースでこれを見つけました。
static HRESULT copy(_Out_ VARIANT* p1, _In_ const VARIANT* p2)
{
p1->vt = VT_EMPTY;
return VariantCopy(p1, const_cast<VARIANT*>(p2));
}