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

时间:2011-09-29 10:58:23

标签: visual-c++ smart-pointers variant bstr

举一个简单的例子:

_bstr_t smartString(L"MyString");

Process(smartString); // takes BSTR.

最初我认为_bstr_t有一个BSTR运算符从_bstr_t转换为BSTR,但是看msdn没有定义这样的运算符。

将_bstr_t传递给BSTR参数或_variant_t传递给VARIANT时如何工作?

2 个答案:

答案 0 :(得分:3)

BSTR typedefWCHAR*(wtypes.h文件),后者typedefwchar_t*(winnt.h文件) )和_bstr_toperator wchar_t*()成员变量。所以编译器只使用该运算符进行转换。

答案 1 :(得分:0)

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

void foo( BSTR* ) {...}

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