我有一个采用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变量并传递它的地址,然后解释结果。