举个简单的例子:
_bstr_t smartString(L"MyString");
Process(smartString); // takes BSTR.
最初我认为 _bstr_t 有一个从 _bstr_t 转换为 BSTR 的 BSTR 运算符,但是查看msdn并没有定义这样的运算符。
将 _bstr_t 传递给 BSTR 参数或将 _variant_t 传递给 VARIANT 时如何工作?
举个简单的例子:
_bstr_t smartString(L"MyString");
Process(smartString); // takes BSTR.
最初我认为 _bstr_t 有一个从 _bstr_t 转换为 BSTR 的 BSTR 运算符,但是查看msdn并没有定义这样的运算符。
将 _bstr_t 传递给 BSTR 参数或将 _variant_t 传递给 VARIANT 时如何工作?
BSTR
被typedef
编辑为WCHAR*
(wtypes.h 文件),后者被typedef
编辑为wchar_t*
(winnt.h 文件)并_bstr_t
具有operator wchar_t*()
成员变量。所以编译器只是使用该运算符进行转换。
如果我正确理解你的问题,你想调用一个需要 BSTR* 的方法。没有隐式转换。而是使用 GetAddress() 参数进行转换。
void foo( BSTR* ) {...}
void f()
{
_bstr_t myBstr;
foo( myBstr.GetAddress() );
}