在使用VariantCopy方法,我遇到以下编译错误:错误C2664:“VariantCopy”:无法从“const变量*”转换参数2“VARIANTARG *”
error C2664: 'VariantCopy' : cannot convert parameter 2 from 'const VARIANT *' to 'VARIANTARG *'
有什么办法解决这个错误?我是否需要包含任何预处理器指令或库?
在使用VariantCopy方法,我遇到以下编译错误:错误C2664:“VariantCopy”:无法从“const变量*”转换参数2“VARIANTARG *”
error C2664: 'VariantCopy' : cannot convert parameter 2 from 'const VARIANT *' to 'VARIANTARG *'
有什么办法解决这个错误?我是否需要包含任何预处理器指令或库?
的VariantCopy
签名曾经是
HRESULT VariantCopy(
VARIANTARG FAR* pvargDest,
VARIANTARG FAR* pvargSrc
);
令人奇怪的是,但输入参数不是const的,你应该知道的是,在你的代码。
MSDN文档解释了原因。该功能可能会修改pvargSrc
If pvargSrc is a VT_DISPATCH or VT_UNKNOWN, AddRef is called to increment the object's reference count.
更新
在最近的SDK,第二个参数成为const
。然而,我发现这个在MFC来源:
static HRESULT copy(_Out_ VARIANT* p1, _In_ const VARIANT* p2)
{
p1->vt = VT_EMPTY;
return VariantCopy(p1, const_cast<VARIANT*>(p2));
}
的问题是在不同的Windows软件开发工具包的方法是不同的,这就是为什么我有这个问题。
嗯,哪个源代码确实会产生这个错误? – Vlad
:: VariantCopy(&variable1,&variable2);这两个参数都是VARIANT – dansc
@MCD所以也许'variable1'是恒定的? – xaizek