[英]“LPVOID” can not be assigned to an entity of the type 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);
必须工作:
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 *不会通过任何检查)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.