Я создаю небольшую игру, используя FLTK и библиотеку Gui из Programming with C++, и я хочу использовать таймер обратного отсчета. FLTK имеет Fl::add_timeout(double t,Callback), что очень полезно. Дело в том, что я хочу использовать эту функцию внутри своего класса, чтобы я мог что-либо изменить внутри окна, когда оно вызывается. Функция должна быть статической, поэтому я не могу получить доступ к окну и внести нужные изменения. Библиотека Gui включает в себя только полезные вещи для программистов-любителей, поэтому я не могу использовать функцию reference_to‹>(). Есть ли идея, как я могу использовать эту функцию или любой другой способ реализовать это? Спасибо за ваше время.
МОЙ КОД:
#include"GUI.h"
#include<FL/Fl.h>
#include"Simple_window.h"
class Game : public Window {
Button *b;
//variables i need for the window
public:
Game(Point xy,int w,int h, const string& name) : Window(xy,w,h,name) {
b=new Button(Point(100,100),40,20,"Button"cb_button);
Fl::add_timeout(1.0,TIME);
}
~Game(){
delete b;
}
static void cb_button(Address,Address addr){
reference_to<Game>(addr).B();
}
void B(){}
static void TIME(void *d){
//access to the variables like this->...
Fl::repeat_timeout(1.0,TIME);
}
};
int main(){
Game win(Point(300,200),400,430,"Game");
return Fl::run();
}