- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以我正在尝试制作一个项目,该项目反射(reflect)了 Ruby 的 Gosu gem,一个 2d 图形插件。为此,我创建了一个名为 Window 的类,它打算继承自 (class Game: public Window),然后定义了它的三个函数:Update()
Controls ()
和 Draw()
。
为了在我的窗口类中完成此操作,我定义了一个函数 Show()
,如下所示
void Window::Show(){
// stuff to initialize and set up my window and controls
glutTimerFunc(100,real_update,fps);
}
我的real_update
函数很简单
void Window::real_update(int v){
glutPostRedisplay();
Update();
glutTimerFunc(1000/fps,real_update,v);
}
这里的逻辑是,无论什么类继承Window
,都可以调用Show()
,这将建立回调循环并初始化窗口,然后在 real_update
循环中,它将调用将在子类中定义的 Update
。
但是,当我创建一个简单的子类时,在子类中定义 Update
以指示它正在被调用,然后在子类的实例上调用 Show 它只会调用Update
的基类 (Window) 定义。
我确定这是对继承的误解,但我不明白为什么。我认为子类对 Show()
的调用会调用基类的定义,然后调用 Update
,自从子类重新定义它以来,它已被更改。
最佳答案
这个问题的答案是在这个线程 Static Virtual functions in c++ 中找到的
从本质上讲,您想要类似虚拟的行为,但因为我想调用过剩函数,它必须是静态的,所以您模板化您的类,并让它调用模板类更新函数。
关于c++ - 如何让 glutTimerFunct 调用子类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24416419/
所以我正在尝试制作一个项目,该项目反射(reflect)了 Ruby 的 Gosu gem,一个 2d 图形插件。为此,我创建了一个名为 Window 的类,它打算继承自 (class Game: p
我是一名优秀的程序员,十分优秀!