2

我有一个采用VARIANT_BOOL指针参数的方法

STDMETHOD(get_Test)(VARIANT_BOOL* result) 

我还有一个BOOL要传递给该方法的测试变量。它必须是BOOL而不是VARIANT_BOOL

BOOL test;

有没有办法通过地址BOOL代替地址VARIANT_BOOL?我试过了

get_Test( &((VARIANT_BOOL)test));

但这没有用。

4

2 回答 2

4

这些类型具有不同的大小并使用不同的 TRUE 值。如果您将值初始化为高位字为零,则强制转换可能会起作用。但是不要这样做,而是这样做:

VARIANT_BOOL temp;
HRESULT hr = get_Test(&temp);
if (SUCCEEDED(hr)) {
    BOOL test = temp != VARIANT_FALSE;
    // etc...
}
于 2013-09-04T13:41:36.137 回答
3

解决方案是您不应该为此使用强制转换,因为BOOL它是类型定义的int并且VARIANT_BOOL是类型定义的short,因此它们很可能具有不同的大小。声明一个VARIANT_BOOL变量并传递它的地址,然后解释结果。

于 2013-09-04T13:12:57.470 回答