如何将指针强制转换为C++;数据成员指向C++;没有数据成员的结构? 我如何将一个指向数据成员的C++结构指针指向一个没有数据成员的C++结构体指针,例如: 结构libusb\u设备\u句柄 < P>例如,在Windows 7上,我想把一个C++指针指向HLAWINPUT,以指向一个C++结构,C++中没有数据成员,比如LIBBBJEDICEXORACHARTING/< for (size_t idx = 0; idx < count; ++idx) { libusb_device *device = list[idx]; libusb_device_descriptor desc = { 0 }; rc = libusb_get_device_descriptor(device, &desc); if (desc.idVendor == MY_VID && desc.idProduct ==MY_PID) { libusb_device_handle *handle; libusb_open(device, &handle); libusb_claim_interface(handle, 0); return (HRAWINPUT *)&handle; } } for(size\u t idx=0;idx

如何将指针强制转换为C++;数据成员指向C++;没有数据成员的结构? 我如何将一个指向数据成员的C++结构指针指向一个没有数据成员的C++结构体指针,例如: 结构libusb\u设备\u句柄 < P>例如,在Windows 7上,我想把一个C++指针指向HLAWINPUT,以指向一个C++结构,C++中没有数据成员,比如LIBBBJEDICEXORACHARTING/< for (size_t idx = 0; idx < count; ++idx) { libusb_device *device = list[idx]; libusb_device_descriptor desc = { 0 }; rc = libusb_get_device_descriptor(device, &desc); if (desc.idVendor == MY_VID && desc.idProduct ==MY_PID) { libusb_device_handle *handle; libusb_open(device, &handle); libusb_claim_interface(handle, 0); return (HRAWINPUT *)&handle; } } for(size\u t idx=0;idx,c++,pointers,struct,C++,Pointers,Struct,我想这样做的原因如下所示: 我已经通过libusb_open()打开了CH Products VM桌面操纵杆设备。然后,我想做一些魔术(意味着轮询事件),比如在libusb_设备_句柄指针的铸造版本上调用GetRawInputData(),以便在大力移动操纵杆时记录x和y坐标 非常感谢您提供的任何帮助。您不能只是将指针投射到结构上,然后假设一切都能正常工作。通过投射一个指针,您只需告诉编译器,例如,一个表示double的指针应该被视为指向std::string实例的指针。这通常是一个非常糟糕的主

我想这样做的原因如下所示:

我已经通过libusb_open()打开了CH Products VM桌面操纵杆设备。然后,我想做一些魔术(意味着轮询事件),比如在libusb_设备_句柄指针的铸造版本上调用GetRawInputData(),以便在大力移动操纵杆时记录x和y坐标


非常感谢您提供的任何帮助。

您不能只是将指针投射到结构上,然后假设一切都能正常工作。通过投射一个指针,您只需告诉编译器,例如,一个表示
double
的指针应该被视为指向
std::string
实例的指针。这通常是一个非常糟糕的主意,不会将
double
转换为
std::string


在特定情况下,您应该遵循Microsoft API规范,从操纵杆读取原始输入;例如,可以找到一个教程。

与您执行任何其他强制类型转换的方式相同,但要合法,它们仍然必须是同一继承层次结构的一部分。一行代码比1000字要好…显示您正在尝试执行的操作。@BoBTFish,我如何使struct libusb_device_handle{}成为HRAWINPUT的父级?我更改了libusb.h的头文件,但没有更改HRAWINPUT的头文件。谢谢。
如何使struct libusb_device_handle{}成为HRAWINPUT的父级
您不能<代码>我更改libusb.h的头文件不要这样做。展示你想做什么。谢谢你的回答。我测试并调试了Alexander Bocken的教程,该教程使用原始输入读取操纵杆,但它有bug。