是否可以在 C++ 中创建自定义事件?例如,假设我有变量 X 和变量 Y。每当 X 发生变化时,我想执行一个将 Y 设置为 3X 的函数。有没有办法创建这样的触发器/事件? (触发器在某些数据库中很常见)
最佳答案
这基本上是观察者模式的一个实例(正如其他人提到和链接的那样)。但是,您可以使用模板魔术来使它在语法上更易于使用。考虑类似...
template <typename T>
class Observable
{
T underlying;
public:
Observable<T>& 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 /* }
};
然后你可以写...
Observable<int> x;
x.registerObserver(...);
x = 5;
int y = x;
你用什么方法来写你的观察者回调函数完全取决于你;我建议 http://www.boost.org的功能或功能模块(您也可以使用简单的仿函数)。我还提醒您要小心这种类型的运算符重载。虽然它可以使某些编码风格更清晰,但不计后果地使用类似 render 的东西
似乎是 LikeAnIntToMe = 10;
一个非常昂贵的操作,很可能会爆炸,并导致 future 几年的调试噩梦。
关于c++ - C++ 中的自定义事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77996/