繁体   English   中英

不能将“ LPVOID”分配给类型X的实体

[英]“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM