Понедельник, 18 Ноября 2024, 01:41

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
GLUT! использование методов класса для CALLBACK функций
RenusДата: Вторник, 06 Мая 2014, 09:04 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Доброй пятницы друзья)
Решил осваивать 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;
}

-l33t-h4xx-Дата: Вторник, 06 Мая 2014, 09:32 | Сообщение # 2
участник
Сейчас нет на сайте
А ещё можно создать функцию-обёртку и не портить структуру класса.
Глобальный указатель всё равно будет болтаться, но без этого никак.


Как правильно задавать вопросы

Сообщение отредактировал -l33t-h4xx- - Вторник, 06 Мая 2014, 09:33
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг