是否可以在C++中创建自定义事件?例如,假设我有变量X和变量Y.每当X改变时,我想执行一个将Y设置为3X的函数.有没有办法创建这样的触发/事件?(触发器在某些数据库中很常见)
这基本上是观察者模式的一个实例(正如其他人提到和链接的那样).但是,您可以使用模板魔术来使其更具语法可调性.考虑类似......
templateclass Observable { T underlying; public: Observable & operator=(const T &rhs) { underlying = rhs; fireObservers(); return *this; } operator T() { return underlying; } void addObserver(ObsType obs) { ... } void fireObservers() { /* Pass every event handler a const & to this instance /* } };
然后你可以写...
Observablex; x.registerObserver(...); x = 5; int y = x;
用于编写观察者回调函数的方法完全取决于您; 我建议http://www.boost.org的功能或功能模块(你也可以使用简单的仿函数).我还提醒您注意这种类型的运算符重载.虽然它可以使某些编码样式更清晰,但鲁莽使用类似的渲染
似乎LikeAnIntToMe = 10;
一个非常昂贵的操作,可能会爆炸,并导致调试噩梦未来几年.