看板 C_and_CPP 關於我們 聯絡資訊
為了下學期的遊戲專題 我打算設計一個方便所有隊友使用的 event/signal system 會需要用到 function delegates (應該翻做"函是委派"吧...) 但由於大部分隊友才剛入門C++半年 我決定捨棄較複雜但有較高效能的技術 而用好懂的方式設計delegate 基本上是在難度上和執行效能上做取捨 不然就算有再好的技術,大部分的隊友不了解的話就沒意義了 TA給了我幾個deleagte相關的連結 經過了幾天的研究之後,總算整理出一些心得 在這邊跟大家分享一下 :) http://allenchou.net/2012/04/easy-c-delegates/ -- Blog http://blog.cjcat.net Gallery http://cjcat2266.deviantart.com ptt2 Board CJWorkshop -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 72.5.59.140
AstralBrain:為什麼不用內建的 http://ideone.com/QhIJH 04/25 11:21
cjcat2266:受教了,我只知道boost有delegate,沒想到tr1也有 :o 04/25 14:21
cjcat2266:順便問一下, int(int)和int (*)(int)是一樣的東西嗎? 04/25 14:22
cjcat2266:我Google了一下,大家都說那是function pointer type 04/25 14:22
cjcat2266:不過我用g++和VC9試,都不給編譯,目前找不到解答 04/25 14:23
purpose:自己注意一下編譯器版本囉 04/25 14:48
EdisonX:vc 9 要額外安裝 tr1 或 sp1,可看這篇 #1EEE8jH 04/25 14:58
EdisonX:文章代碼給錯,補上 #1EEE8jH0 (C_and_CPP) 04/25 15:00
cjcat2266:我指的是 int(int) 當作template argument 04/25 15:15
cjcat2266:剛剛stress-tested了一下我的和TR1的delegates 04/25 16:02
cjcat2266:我的效率約是TR1的2.5倍,好險,至少沒有白做工XD 04/25 16:02
purpose:英文不好沒仔細看文章,只是奇怪,你最下面的 foo 例子 04/25 16:38
purpose:如果每次都呼叫 foo,你直接用 a->foo(...) 不就好了 04/25 16:39
purpose:這例子似乎太簡化,看不出用你這東西的優點 04/25 16:39
cjcat2266:這是要拿來實作event system用的 04/25 16:54
AstralBrain:如果你的compiler夠新, 可以試試lambda expression 04/25 17:48
AstralBrain:compiler有可能幫你直接inline掉 這樣最快XD 04/25 17:49
ADF:至從看完使用fastdelegate優化完的程式碼 04/25 18:13
ADF:我就沒再用std::function和自己寫的~ 04/25 18:14