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() );
}