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