Не может преобразовать параметр из wchar [100] в wchar **
Вопрос
У меня есть метод, ожидающий 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
Должен явно сказать, что нужно это сделать.