作者uranusjr (←這人是超級笨蛋)
看板C_and_CPP
標題Re: [問題] signal slot 機制是否有實現的條件?
時間Fri Jan 1 13:08:00 2016
※ 引述《ResolaQQ (ResolaQQ)》之銘言:
: 問題(Question):
: 想請問,要實現 signal slot 機制,是否一定需要 template?
: 有沒有可能在不使用 template 和 preprocessor 的情況下寫出來呢?
這要看你想做到什麼程度(要提供多少 type-safety, 語法要多漂亮等等)
Signal-slot 機制在本質上就是「某件事情發生時, 指定要發生另一件事情」
這個其實就是 observer pattern, 網路上可以找到一堆範例
用 template 或 preprocessor 的原因主要是讓語法漂亮
如果不用這種東西, 因為 C++ 的 type system 限制
當你在送出/接收訊息時勢必要打包/解包參數列和回傳值
才能比較好的處理未知參數量與參數型別
否則你用 va_list 還要傳參數數量, 用指標加多型就無法直接傳基礎型別
當然這些是都可以解, 像 Objective-C runtime 的 objc_msgSend 是一個方法
只是就要多寫很多 boilerplate code(Objective-C 是靠 compiler 的語法糖)
--
「我最想要的同伴嘛,首先是要笑口常開,其次是我們能永遠不會發生誤會。
如果這些都能辦到的話,嗯,如果他是世界上第一流的橋手,也還不錯。」
-- 班尼多‧加羅素,前義大利藍隊成員
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.161.94.175
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1451624882.A.EA7.html
推 ResolaQQ: 我就是希望寫起來不要那麼麻煩而已,感謝提供資訊 01/01 20:20
→ ResolaQQ: objc_msgSend也有點微妙,看來不太可能寫的漂亮了 01/01 20:44