如何将指向C ++结构的指针与数据成员一起转换为指向C ++结构的指针,该结构没有数据成员,例如: struct libusb_device_handle?
例如,在Windows 7上,我想将一个指向HRAWINPUT的C ++指针转换为指向C ++结构的C ++指针,该结构没有数据成员,例如libusb_device_handle
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;
}
}
我想这样做的原因如下所示:
我已经通过libusb_open()打开了CH Products VM桌面操纵杆设备。然后,我想做一些魔法(意味着轮询事件),例如在指向libusb_device_handle的指针版本上调用GetRawInputData(),以便在我们大力移动操纵杆时记录x和y坐标。
非常感谢任何帮助。
答案 0 :(得分:0)
你不能只是指向结构的指针并假设事情会起作用。通过转换指针,您只需告诉编译器,例如应该考虑指向double
的指针而不是指向std::string
实例的指针。这通常是非常错误的想法,不会将double
转换为std::string
。
具体来说,您应该遵循Microsoft API规范,从操纵杆读取原始输入;可以找到一个教程,例如here。