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