我有一个静态成员函数,如下所示:
void whackamole_window::showmole(void *){
if (mtime == 0) {
Fl::remove_timeout(whackamole_window::showmole);
}
else {
//...
m(Point(randx*50+25,randy*50+25),randval),
mb(Point(randx*50,randy*50),50,50,"1",cb_addscore)
Fl::check();
Fl::redraw();
mtime -= 3;
Fl::repeat_timeout(3, whackamole_window::showmole);
return;
}
}
成员函数在类
中定义如下static void showmole(void*);
由于静态成员无法访问该类的任何其他成员(除了其他静态成员),我收到以下错误:
mole111j.cpp:176:无效使用 成员
whackamole_window::m' in static member function mole111j.cpp:177: invalid use of member
whackamole_window :: mb'in 静态成员函数
如果我尝试使该功能非静态,则计时器似乎不起作用。那么我该如何解决这个问题并使用计时器访问m和mb成员呢?
答案 0 :(得分:0)
我对FLTK了解不多,但看起来你的showMole()
方法传入的值为void *
,你可以在计时时指定它。
如果在设置计时器时提供指向窗口的指针,则可以将void *
值强制转换回whackamole_window *
并使用生成的指针访问非静态成员。
答案 1 :(得分:0)
m和mb都是静态变量吗?如果不是,你不能像你一样在静态函数中使用它们。
将它们设为静态或传入。