Re: [問題] signal slot 機制是否有實現的條件?

作者: uranusjr (←這人是超級笨蛋)   2016-01-01 13:08:00
※ 引述《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 的語法糖)
作者: ResolaQQ (ResolaQQ)   2016-01-01 20:20:00
我就是希望寫起來不要那麼麻煩而已,感謝提供資訊objc_msgSend也有點微妙,看來不太可能寫的漂亮了

Links booklink

Contact Us: admin [ a t ] ucptt.com