[問題] 有辦法在C上實現多型嗎?

看板C_and_CPP作者時間12年前 (2013/07/09 14:30), 編輯推噓1(107)
留言8則, 4人參與, 最新討論串1/1
開發平台(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

07/09 14:43, , 1F
自己實做vtable
07/09 14:43, 1F

07/09 15:00, , 2F
function pointer
07/09 15:00, 2F

07/09 15:29, , 3F
http://ideone.com/kH46TP 大部分功能都可以用C搞出來
07/09 15:29, 3F

07/09 15:30, , 4F
雖然可能用function pointer就夠了
07/09 15:30, 4F

07/09 22:27, , 5F
function pointer +1
07/09 22:27, 5F

07/14 20:34, , 6F
你可以參考一下CPython 如何實現多型。
07/14 20:34, 6F

07/14 20:35, , 8F
上面是我之前演講的投影片,給你參考一下
07/14 20:35, 8F
文章代碼(AID): #1Hswtnsz (C_and_CPP)