Как вернуть локальный 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;
}