C++ 如何将BOOL的地址传递给接受VARIANT\u BOOL地址的方法?
我有一个方法,它采用C++ 如何将BOOL的地址传递给接受VARIANT\u BOOL地址的方法?,c++,com,com-interop,C++,Com,Com Interop,我有一个方法,它采用VARIANT\u BOOL指针的参数 STDMETHOD(get_Test)(VARIANT_BOOL* result) 我还有一个BOOL测试变量要传递到该方法中。它必须是BOOL,而不是VARIANT\u BOOL BOOL test; 有没有办法用BOOL的地址代替VARIANT\u BOOL的地址?我试过了 get_Test( &((VARIANT_BOOL)test)); 但这不起作用。解决方案是,您不应该为此使用强制转换,因为BOOL的类型定义为
VARIANT\u BOOL
指针的参数
STDMETHOD(get_Test)(VARIANT_BOOL* result)
我还有一个BOOL
测试变量要传递到该方法中。它必须是BOOL
,而不是VARIANT\u BOOL
BOOL test;
有没有办法用BOOL
的地址代替VARIANT\u BOOL
的地址?我试过了
get_Test( &((VARIANT_BOOL)test));
但这不起作用。解决方案是,您不应该为此使用强制转换,因为
BOOL
的类型定义为int
,而VARIANT\u BOOL
的类型定义为short
,因此它们很可能具有不同的大小。声明一个VARIANT\u BOOL
变量并传递其地址,然后解释结果。这些类型具有不同的大小并使用不同的值表示TRUE。如果您初始化该值,使上面的字为零,则强制转换可以工作。但不要这样做,而是这样做:
VARIANT_BOOL temp;
HRESULT hr = get_Test(&temp);
if (SUCCEEDED(hr)) {
BOOL test = temp != VARIANT_FALSE;
// etc...
}
你确定这个问题是关于C++吗?C++在哪里?这看起来像C++,所以我已经改变了标题和标签。你也可能要提到的是,值<代码> ValueIsPoOL 使用的是真(<代码> ValueToalEng/<代码>)是<代码> -1 < /C>,而不是<代码> 1 < /C>。