क्या ऐसा करने का सही तरीका क्या है:_bstr_t का उपयोग करते हुए समारोह में के प्रकार BSTR * पैरामीटर पारित करने के लिए
_bstr_t description;
errorInfo->GetDescription(&description.GetBSTR());
या:
_bstr_t description;
errorInfo->GetDescription(description.GetAddress());
कहाँ IError:GetDescription
परिभाषित किया गया है के रूप में:
HRESULT GetDescription (BSTR *pbstrDescription);
मुझे पता है कि मैं आसानी से ऐसा कर सकता हूं:
BSTR description= SysAllocString (L"Whateva"));
errorInfo->GetDescription (&description);
SysFreeString (description);
धन्यवाद
+1, _bstr_t के BSTR की बात को अन्य मामलों द्वारा साझा किया जा रहा है, मुझे कुछ भी छोड़ दिया जो सीधे इसे असाइन कर सकता है। –
क्या आप असाइनमेंट ऑपरेटर के बजाय 'अटैच() 'का उपयोग नहीं करना चाहिए? –
जैसा कि दिखाया गया है, 'GetDescription' फ़ंक्शन 'SysAllocString' के साथ' temp' को स्मृति आवंटित करता है, और वह स्मृति कभी मुक्त नहीं होती है। या तो, आपको 'SysFreeString (temp)' को कॉल करना होगा, या यह सुनिश्चित करना होगा कि 'लपेटें' उस स्मृति से जुड़ती है और इसे मुक्त करती है। – abelenky