Не может преобразовать параметр из wchar [100] в wchar **

StackOverflow https://stackoverflow.com/questions/4093353

  •  28-09-2019
  •  | 
  •  

Вопрос

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

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

Ошибка C2664: «XXXX»: не удается преобразовать параметр 3 из «WCRAL [100], чтобы« WHAR * »

Это было полезно?

Решение

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

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

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

А затем использовать result если успешно.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top