作者icetofux ()
看板C_and_CPP
標題[問題] 有辦法在C上實現多型嗎?
時間Tue Jul 9 14:30:06 2013
開發平台(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:雖然可能用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