以一個簡單的例子:它作爲參數傳遞時如何將_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());
}