0

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);
4

1 に答える 1

1

それはうまくいく必要があります:

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* に変換すると、チェックに合格しません)。

于 2014-06-24T16:19:25.533 に答える