作者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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1451624882.A.EA7.html
1F:推 ResolaQQ: 我就是希望写起来不要那麽麻烦而已,感谢提供资讯 01/01 20:20
2F:→ ResolaQQ: objc_msgSend也有点微妙,看来不太可能写的漂亮了 01/01 20:44