推 LiloHuang: 其實用 C 寫物件導向算頗常見的,舉例像 lighttpd 就是12/13 18:02
→ LiloHuang: 通常會在 struct 裡擺很多個 function pointer12/13 18:03
→ LiloHuang: 而這些 function pointer 都會有共同的第一個參數12/13 18:04
→ PoorLoser: 封裝 繼承 多態, 可以做出近似的東西但坦白說浪費資源12/13 18:04
→ PoorLoser: 選擇好用的部分就好12/13 18:05
→ LiloHuang: 那個就是當作 this 指標,型別就是那個 struct 自己12/13 18:05
→ LiloHuang: 找找 Object Oriented Programming in C 以了解更多12/13 18:07
→ uranusjr: C 做 OOP 最麻煩的是 virtual function table 啊 orz12/13 18:09
→ OPIV: 感謝L大解說!12/13 18:09
→ LiloHuang: 除非必要,寫 C++ 會比較開心一點,還有 boost 可以用12/13 18:09
→ OPIV: C真的是個很棒的語言啊!12/13 18:10
→ LiloHuang: 還得自己弄 vtbl 的確也是一個困擾,還是寫 C++ 吧12/13 18:11
→ LiloHuang: 當然,如果是興趣也沒什麼不好,了解原理也是挺好的12/13 18:12
→ LiloHuang: 只是工作上,除非因為特殊目的禁止用 C++,方便點就好12/13 18:12
→ CumCumCum: 這是靜態12/13 18:33
推 s25g5d4: gtk...12/13 22:07
→ scwg: ptt 的下棋功能有用到 vtable, gtk 更狠, 連繼承都有12/14 00:03
→ sunneo: 除非那個環境的abi/codegen沒有一個編譯器支援12/14 19:19
→ sunneo: 不然這樣徒手把c++的事情弄到c上真的只是在操語言能力12/14 19:20
※ 編輯: OPIV (114.37.133.58), 12/14/2014 20:51:00
推 Bencrie: 其實應該說 glib 裡的 gobject 12/14 23:04
推 cjcat2266: 敝人有寫過一篇簡易教學,可以參考看看 12/15 06:32
推 cjcat2266: 啊,更正,我的作法是把base class插入到derived class 12/15 06:35
→ cjcat2266: 而不是插入vtable,這個作法只能單繼承就是了 12/15 06:36
→ cjcat2266: 這個做法確定可行,因為最後用這個方法做出個遊戲成品 12/15 06:37
→ OPIV: c大超強!!! 12/15 12:26