Reputation: 2293
Taking a simple example:
_bstr_t smartString(L"MyString");
Process(smartString); // takes BSTR.
Initially I thought _bstr_t has a BSTR operator converting from _bstr_t to BSTR, but looking at msdn there is no such operator defined.
How does it work when passign _bstr_t to BSTR parameter or _variant_t to VARIANT?
Upvotes: 3
Views: 3802
Reputation: 1
If I understand your problem correctly, you want to call a method that expects BSTR*. There is no implicit conversion. Instead, use the GetAddress() parameter for the conversion.
void foo( BSTR* ) {...}
void f()
{
_bstr_t myBstr;
foo( myBstr.GetAddress() );
}
Upvotes: 0
Reputation: 170489
BSTR
is typedef
ed to be WCHAR*
(wtypes.h file) and the latter is typedef
ed to be wchar_t*
(winnt.h file) and _bstr_t
has operator wchar_t*()
member variable. So the compiler just uses that operator for conversion.
Upvotes: 3