[分享] Easy C++ Delegates

看板C_and_CPP作者 (CJ Cat)時間13年前 (2012/04/25 07:36), 編輯推噓5(5015)
留言20則, 5人參與, 最新討論串1/1
為了下學期的遊戲專題 我打算設計一個方便所有隊友使用的 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

04/25 11:21, , 1F
為什麼不用內建的 http://ideone.com/QhIJH
04/25 11:21, 1F

04/25 14:21, , 2F
受教了,我只知道boost有delegate,沒想到tr1也有 :o
04/25 14:21, 2F

04/25 14:22, , 3F
順便問一下, int(int)和int (*)(int)是一樣的東西嗎?
04/25 14:22, 3F

04/25 14:22, , 4F
我Google了一下,大家都說那是function pointer type
04/25 14:22, 4F

04/25 14:23, , 5F
不過我用g++和VC9試,都不給編譯,目前找不到解答
04/25 14:23, 5F

04/25 14:48, , 7F
自己注意一下編譯器版本囉
04/25 14:48, 7F

04/25 14:58, , 8F
vc 9 要額外安裝 tr1 或 sp1,可看這篇 #1EEE8jH
04/25 14:58, 8F

04/25 15:00, , 9F
文章代碼給錯,補上 #1EEE8jH0 (C_and_CPP)
04/25 15:00, 9F

04/25 15:15, , 10F
我指的是 int(int) 當作template argument
04/25 15:15, 10F

04/25 16:02, , 11F
剛剛stress-tested了一下我的和TR1的delegates
04/25 16:02, 11F

04/25 16:02, , 12F
我的效率約是TR1的2.5倍,好險,至少沒有白做工XD
04/25 16:02, 12F

04/25 16:38, , 13F
英文不好沒仔細看文章,只是奇怪,你最下面的 foo 例子
04/25 16:38, 13F

04/25 16:39, , 14F
如果每次都呼叫 foo,你直接用 a->foo(...) 不就好了
04/25 16:39, 14F

04/25 16:39, , 15F
這例子似乎太簡化,看不出用你這東西的優點
04/25 16:39, 15F

04/25 16:54, , 16F
這是要拿來實作event system用的
04/25 16:54, 16F

04/25 17:48, , 17F
如果你的compiler夠新, 可以試試lambda expression
04/25 17:48, 17F

04/25 17:49, , 18F
compiler有可能幫你直接inline掉 這樣最快XD
04/25 17:49, 18F

04/25 18:13, , 19F
至從看完使用fastdelegate優化完的程式碼
04/25 18:13, 19F

04/25 18:14, , 20F
我就沒再用std::function和自己寫的~
04/25 18:14, 20F
文章代碼(AID): #1FbpZb6x (C_and_CPP)