看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 假設我有A與B兩個模型, 兩者都有 Start(), DoSomething() 與 End()三種函式, 但在A 與 B下各自有不同的行為, 我想讓使用者在程式執行階段再來指定使用A或B模型, 並執行 該模型下的三個函式. 在C++下我可以利用多型的概念, 先宣告一個module的抽象類別, 並衍生子類別 ModuleA 與 ModuleB 並各自實作 Start(), DoSomething() 與 End(), 並在main執行階段才依使 用者選擇來決定使用哪一個module, 如下: http://codepad.org/6bRtSY16 在 main 之中, 我可以用同一個名稱來執行 ModuleA 或 ModuleB 的 Start(), DoSomething() 與 End(). 現在我有一支程式想實現類似的架構, 但該平台僅提供C編譯器, 請問有什麼技巧可以實 現這樣的應用嗎? 謝謝。 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.72.212.239
azureblaze:自己實做vtable 07/09 14:43
akasan:function pointer 07/09 15:00
azureblaze:http://ideone.com/kH46TP 大部分功能都可以用C搞出來 07/09 15:29
azureblaze:雖然可能用function pointer就夠了 07/09 15:30
tomnelson:function pointer +1 07/09 22:27
ya790206:你可以參考一下CPython 如何實現多型。 07/14 20:34
ya790206:上面是我之前演講的投影片,給你參考一下 07/14 20:35