gpt4 book ai didi

c++ - "LPVOID"不能分配给X类型的实体

转载 作者:行者123 更新时间:2023-11-28 06:48:59 26 4
gpt4 key购买 nike

我正在处理处理 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* 将不会通过任何检查)。

关于c++ - "LPVOID"不能分配给X类型的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24390450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com