& Quot; LPVOID & Quot; не может быть присвоен объекту типа X

Я имею дело с функцией, которая имеет дело с USB-устройствами.

Но у меня уже есть проблема в чем-то простом:

Я получаю ошибку компилятора

A value of the type "LPVOID" can not be assigned to an entity of the type "PSP_DEVICE_INTERFACE_DETAIL_DATA" in the line
"DevIntfDetailData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSize);"

Может ли кто-нибудь сказать мне, что я здесь делаю не так?
Спасибо!

PSP_DEVICE_INTERFACE_DETAIL_DATA DevIntfDetailData;
DevIntfDetailData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSize);

0

Решение

Это должно работать:

DevIntfDetailData = reinterpret_cast<PSP_DEVICE_INTERFACE_DETAIL_DATA>(HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSize));

HealAlloc (как и все другие функции alloc) возвращает указатель на кучу памяти (void *), и C ++ не может разрешить устанавливать значение типа T * в значение типа void * без ручного приведения.

Существуют dynamic_cast, static_cast, reinterpret_cast и const_cast. Когда вы хотите преобразовать void * в любой указатель, вы должны использовать reinterpret_cast, потому что он конвертирует типы без какой-либо проверки (преобразование void * в любой T * не пройдет никакой проверки).

1

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


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