我正在处理一个处理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 :(得分:1)
必须工作:
DevIntfDetailData = reinterpret_cast<PSP_DEVICE_INTERFACE_DETAIL_DATA>(HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwSize));
HealAlloc(与所有其他alloc函数一样)返回指向内存堆(void *)的指针,并且C ++不允许将类型为T *的set值设置为void *类型的值,而无需手动转换。
存在dynamic_cast,static_cast,reinterpret_cast和const_cast。当你想将void *转换为任何指针时,你必须使用reinterpret_cast,因为它在没有任何检查的情况下转换类型(将void *转换为任何T *都不会通过任何检查)。