Доброй пятницы друзья)
Решил осваивать OpenGL понемножку, и GLUT соответственно, и вот наткнулся на проблему.
GLUT использует функции обратного вызова(так называемые CALLBACK-и), для обработки различных событий в основном для средств ввода информации(клавиатура, мышка и т.д.)
Так вот когда я вставляю в них обычные глобальные функции, все работает отлично:
glutMotionFunc(MouseMove);
А когда хочу передать управление методу класса, который по моей задумке должен обрабатывать средства ввода, то выдает ошибку при компиляции:
glutMotionFunc(IOS.MouseMove);
Ошибка:
[Error] cannot convert 'IOS::MouseMove' from type 'void (IOS::)(int, int)' to type 'void (__attribute__((__cdecl__)) *)(int, int)'
Подскажите в чем проблема и как исправить, спасибо.Добавлено (06.05.2014, 09:04)
---------------------------------------------
В общем проблему решил, кому интересно, может поможет.
Метод класса объявил как статичный:
static void MouseMove(int, int);
Но, поскольку статичные методы не работают с не статичными переменными-членами, то доступ к ним осуществляю через глобальный указатель на объект.
void IOS::MouseMove(int x, int y)
{
pIOS->MOUSE_X = x;
pIOS->MOUSE_Y = y;
}