Как вернуть локальный CComSafeArray в выходной параметр LPSAFEARRAY?

У меня есть функция COM, которая должна возвращать SafeArray черезLPSAFEARRAY* выходной параметр. Функция создает SafeArray с использованием ATLCComSafeArray шаблон класса. Моя наивная реализация используетCComSafeArray::Detach() чтобы переместить владение из локальной переменной в выходной параметр:

void foo(LPSAFEARRAY* psa)
{
    CComSafeArray ret;
    ret.Add(CComVariant(42));
    *psa = ret.Detach();
}

int main()
{
    CComSafeArray sa;
    foo(sa.GetSafeArrayPtr());

    std::cout < sa[0].lVal < std::endl;
}

Ответы на вопрос(3)

Ваш ответ на вопрос