&r,&receiver::callback1);
CONNECT(s,m_valueChanged,&r2,&receiver2::callback2);
s.set_value(1);
return 0;
}
这个版本就比较像样了,一个signal可与多个slots连接,增加了类似QT的connect,用宏实现#define CONNECT(sender,signal,receiver,slot) sender.signal.bind(receiver,slot),这样使用者就非常方便,而且现在已完全解耦,sender只管定义自己的signal,在恰当时机用仿函数形式调用即可,而receiver只管实现callback,互不影响,可独立工作,如果需要再通过CONNECT将它们连接起来即可,已经很组件化了,可是离真正的工程应用尚有一段距离,如它不能接收全局函数或静态成员函数或仿函数为回调函数,不能带两个或更多的函数参数,最后一步了。