2011-09-29 74 views
2

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

回答

3

BSTRtypedef ED爲WCHAR*(wtypes.h文件),而後者是typedef ED是wchar_t*(WINNT.H文件)和_bstr_t具有operator wchar_t*()成員變量。所以編譯器只是使用該運算符進行轉換。

0

如果我正確理解你的問題,你想調用一個期望BSTR *的方法。沒有隱式轉換。而是使用GetAddress()參數進行轉換。

void foo(BSTR*) {...} 

void f() 
{ 
    _bstr_t myBstr; 
    foo(myBstr.GetAddress()); 
}