看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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