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