Как вы получаете базовый SAFEARRAY от CComSafeArray?

Я попробовал GetSafeArrayPtr() метод, который возвращает LPSAFEARRAY *, который typedef определен как:

typedef /* [wire_marshal] */ SAFEARRAY *LPSAFEARRAY;

Я думал, что смогу напрямую присвоить это переменной SAFEARRAY *, но компилятор выдает эту ошибку:

ошибка C2440: ‘=’: невозможно преобразовать из ‘LPSAFEARRAY *’ в ‘SAFEARRAY

Я нашел это странным. Что я здесь не так делаю?

PS: я делаю это внутри DLL C ++ / CLI (если это имеет какое-либо значение).

0

Решение

LPSAFEARRAY * это указатель на SAFEARRAY *так что вам нужен двойной указатель, например:

{
CComSafeArray<VARIANT> vArray;
SAFEARRAY** pArray;
pArray = vArray.GetSafeArrayPtr();
}

И тогда вы можете передать SAFEARRAY * к функции, которая нуждается в этом в качестве аргумента, разыменовывая указатель, возвращаемый из CComSafeArray:

DummyFunction(*pArray);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]