glutIdleFunc
просто не поддерживает вызов нестатической функции-члена.Если вы хотите, чтобы свободный цикл вызывал метод объекта, вам нужно поместить указатель на объект в глобальную переменную и иметь регулярную функцию или статический член, который вызывает ваш метод step
для этого глобального объекта.1003 *
Есть два способа сделать это.Более простой способ:
// global scope
Core *foo = NULL;
void myIdleCallback()
{
foo->step();
}
// when initializing, in main or whatever
{
// ...
foo = &theThingIWantToCall;
glutIdleFunc(&myIdleCallback);
// ...
}
Или, для немного большей инкапсуляции:
// work these into your Core declaration
class Core {
static class Core* foo;
static void myIdleCallback() {
foo->step();
}
};
// at global scope
Core *Core::foo = NULL;
// at initialization time
{
// ...
Core::foo = &theThingIWantToCall;
// or if foo is private, add a static method to set it and call that
glutIdleFunc(&Core::myIdleCallback);
// ...
}