Регистрация обратного вызова в C ++ из библиотеки устройств джойстика

Я нашел библиотеку для обработки 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);

Таким образом, что я сделал не так (и как я могу это исправить?)?

Благодарю.

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]