Я нашел библиотеку для обработки USB-устройств джойстика в C ++ в
простая кроссплатформенная библиотека геймпада поэтому я пытаюсь прикрепить обратные вызовы от него к моему приложению. Таким образом, он имеет следующие определения
struct Gamepad_device {
unsigned int deviceID;
const char * description;
int vendorID;
int productID;
unsigned int numAxes;
unsigned int numButtons;
float * axisStates;
bool * buttonStates;
void * privateData;
};
[...]
/* Registers a function to be called whenever a device is attached. The specified
function will be called only during calls to Gamepad_init() and
Gamepad_detectDevices(), in the thread from which those functions were called.
Calling this function with a NULL argument will stop any previously registered
callback from being called subsequently. */
void Gamepad_deviceAttachFunc
(void (* callback)
(struct Gamepad_device * device, void * context), void * context);
Таким образом я пытаюсь прикрепить эту функцию Gamepad_deviceAttachFunc к частной функции в моем приложении.
Я пытался зарегистрировать свою личную функцию joystickIsAttached (Gamepad_device device)
с помощью
Gamepad_deviceAttachFunc(joystickIsAttached(*Gamepad_device));
а также
Gamepad_deviceAttachFunc(joystickIsAttached(*Gamepad_device));
но оба ведут меня к
ошибка: ожидаемое первичное выражение до токена ‘)’
Gamepad_deviceAttachFunc (joystickIsAttached (* Gamepad_device));
или же
ошибка: ожидаемое первичное выражение до токена ‘)’
Gamepad_deviceAttachFunc (joystickIsAttached (Gamepad_device));
Обновить
Я также попытался определить вызываемую функцию как
void joystickDeviceAttachedCallback
(struct Gamepad_device * device, void * context);
и зарегистрировать обратный вызов, используя
Gamepad_deviceAttachFunc(joystickDeviceAttachedCallback, (void *) 0x1);
но это приводит к
ошибка: не удалось преобразовать ‘MainWindow :: joystickDeviceAttachedCallback’
от типа ‘void (MainWindow ::) (Gamepad_device *, void *) «к типу» void
() (Gamepad_device, пустота *)»
Gamepad_deviceAttachFunc (joystickDeviceAttachedCallback, (void *) 0x1);
Таким образом, что я сделал не так (и как я могу это исправить?)?
Благодарю.
Задача ещё не решена.