如何将指向C ++结构的指针与数据成员一起转换为指向没有数据成员的C ++结构的指针?

时间:2015-12-27 09:48:56

标签: c++ pointers struct

如何将指向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坐标。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

你不能只是指向结构的指针并假设事情会起作用。通过转换指针,您只需告诉编译器,例如应该考虑指向double的指针而不是指向std::string实例的指针。这通常是非常错误的想法,不会将double转换为std::string

具体来说,您应该遵循Microsoft API规范,从操纵杆读取原始输入;可以找到一个教程,例如here