Visual c++ 当作为参数传递时,它如何将_bstr_t转换为bstr?

Visual c++ 当作为参数传递时,它如何将_bstr_t转换为bstr?,visual-c++,smart-pointers,variant,bstr,Visual C++,Smart Pointers,Variant,Bstr,举个简单的例子: _bstr_t smartString(L"MyString"); Process(smartString); // takes BSTR. 起初我认为_bstr_t有一个从_bstr_t转换为bstr的bstr操作符,但现在还没有定义这样的操作符 当传递bstr参数或变量到变量时,它是如何工作的?bstr是typedefed为WCHAR*(wtypes.h文件),后者是typedefed为WCHAR*(winnt.h文件),并且\u bstr*/code>有成员变量。因此

举个简单的例子:

_bstr_t smartString(L"MyString");

Process(smartString); // takes BSTR.
起初我认为_bstr_t有一个从_bstr_t转换为bstr的bstr操作符,但现在还没有定义这样的操作符


当传递bstr参数或变量到变量时,它是如何工作的?

bstr
typedef
ed为
WCHAR*
(wtypes.h文件),后者是
typedef
ed为
WCHAR*
(winnt.h文件),并且
\u bstr*/code>有成员变量。因此编译器只使用该运算符进行转换。

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

void foo( BSTR* ) {...}

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