我有一个采用VARIANT_BOOL
指针参数的方法
STDMETHOD(get_Test)(VARIANT_BOOL* result)
我还有一个BOOL
要传递给该方法的测试变量。它必须是BOOL
而不是VARIANT_BOOL
。
BOOL test;
有没有办法通过地址BOOL
代替地址VARIANT_BOOL
?我试过了
get_Test( &((VARIANT_BOOL)test));
但这没有用。
我有一个采用VARIANT_BOOL
指针参数的方法
STDMETHOD(get_Test)(VARIANT_BOOL* result)
我还有一个BOOL
要传递给该方法的测试变量。它必须是BOOL
而不是VARIANT_BOOL
。
BOOL test;
有没有办法通过地址BOOL
代替地址VARIANT_BOOL
?我试过了
get_Test( &((VARIANT_BOOL)test));
但这没有用。
这些类型具有不同的大小并使用不同的 TRUE 值。如果您将值初始化为高位字为零,则强制转换可能会起作用。但是不要这样做,而是这样做:
VARIANT_BOOL temp;
HRESULT hr = get_Test(&temp);
if (SUCCEEDED(hr)) {
BOOL test = temp != VARIANT_FALSE;
// etc...
}
解决方案是您不应该为此使用强制转换,因为BOOL
它是类型定义的int
并且VARIANT_BOOL
是类型定义的short
,因此它们很可能具有不同的大小。声明一个VARIANT_BOOL
变量并传递它的地址,然后解释结果。