C++有事件机制吗?解决方法

C++有事件机制吗?
为了考虑跨平台性,我不能使用Windows的消息机制,而且那样会很麻烦。我希望实现这样的功能,比如我的程序要在图形界面上显示一个红绿灯,用一个bool变量来表示。true表示红灯,false表示绿灯。每当这个变量发生变化的时候,要通知图形界面调用change_color函数修改灯的颜色。最开始我想的是,每次修改完这个变量之后主动调用change_color,但是后来发现很多地方都会修改这个变量的值,每次都主动调用不太合适。我想要的结果是,当变量的值发生变化的时候自动调用某个函数。
有没有办法利用C++自身的功能来实现上面的内容?

------解决方案--------------------
楼主看看这个吧:C++实现事件机制
------解决方案--------------------
观察者模式
------解决方案--------------------
回调?可以。最简单就函数指针,要么用std::function(没C++11就boost代替)之类的。
当然要直接监视变量值是没办法的,得封装起来写访问器(setter中改变值的前/后调用回调函数)。
我以前写的(偷懒,只支持1个参数):http://code.google.com/p/yslib/source/browse/YFramework/include/YSLib/Core/yevt.hpp
更完善和复杂的实现见boost.signal。
Qt用的不是标准C++,用了自己的扩展。