当作为参数传递时,如何将_bstr_t转换为BSTR



举个简单的例子:

_bstr_t smartString(L"MyString");
Process(smartString); // takes BSTR.

最初我认为_bstr_t有一个从_bstr_t到BSTR的BSTR操作符,但是查看msdn没有定义这样的操作符。

当将_bstr_t传递给BSTR参数或_variant_t传递给VARIANT时,它是如何工作的?

BSTRtypedef被编辑为WCHAR* (wtypes.h文件),typedef被编辑为wchar_t* (winnt.h文件),_bstr_toperator wchar_t*()成员变量。编译器只使用那个操作符进行转换

如果我正确理解你的问题,你想调用一个期望BSTR*的方法。没有隐式转换。相反,使用GetAddress()参数进行转换。

void foo( BSTR* ) {...}
void f()
{
   _bstr_t myBstr;
   foo( myBstr.GetAddress() );
}

相关内容

  • 没有找到相关文章

最新更新