簡體   English   中英

如何獲取glutTimerFunct來調用子類函數

[英]How to get glutTimerFunct to call a child classes function

因此,我正在嘗試制作一個反映Ruby的Gosu gem(一個2D圖形插件)的項目。 為此,我創建了一個名為Window的類,該類旨在從(類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 ,該定義自子類重新定義以來已更改。

在該線程的c ++中找到了此問題的答案靜態虛擬函數

本質上,您希望具有類似虛擬的行為,但是由於我想調用glut函數,因此它必須是靜態的,因此您可以對類進行模板化,並使其調用模板類更新功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM