Невозможно преобразовать параметр из WCHAR [100] в WCHAR ** - PullRequest
1 голос
/ 04 ноября 2010

У меня есть метод, ожидающий WCHAR **, мне нужно получить некоторые данные из этого метода. Я объявляю массив WCHAR [100] и передаю его функции. Компилятор выдает эту ошибку:

WCHAR result[100];
UINT i;
hr = SomeFunc(handle, &i, result);

ошибка C2664: «XXXX»: невозможно преобразовать параметр 3 из «WCHAR [100]» в «WCHAR **»

1 Ответ

5 голосов
/ 04 ноября 2010

Вообще говоря, если функция берет указатель на указатель (WCHAR** в данном случае), то она выделяет свою собственную память и устанавливает указатель на указатель на эту память. Документация SomeFunc должна описывать, действительно ли это так.

Если это так, то вам, вероятно, понадобится что-то вроде:

WCHAR* result = NULL;
UINT i;
hr = SomeFunc(handle, &i, &result);

А затем используйте result в случае успеха.

Конечно, в этом случае вам, скорее всего, также придется беспокоиться об освобождении памяти, на которую было установлено result. Документация SomeFunc должна прямо указывать, что необходимо для этого также.

...