Скорее всего, это очень простой ответ, но я не могу понять это.
Я пытаюсь реорганизовать некоторый код, который выглядит следующим образом:
SAFEARRAY* psa;
long* count;
HRESULT hr = pSomeInterface->ListSomething(&psa, &count);
if (SUCCEEDED(hr))
{
CComSafeArray<BSTR> sa;
if (*count > 0)
{
sa.Attach(psa);
}
}
// perform operations on sa
// allow CComSafeArray to destroy the object
return hr;
Я хотел бы изменить код на что-то вроде:
CComSafeArray<BSTR> sa;
long* count;
hr = pSomeInterface->ListSomething(&(sa.m_psa), &count);
if (SUCCEEDED(hr))
{
// perform operations on sa
}
Но когда я выполняю это, sa содержит мусор. Что происходит и почему? Какой правильный синтаксис?