我目前有一个可以通过回调通知许多其他对象的类:
class Callback {
virtual NodulesChanged() =0;
virtual TurkiesTwisted() =0;
};
class Notifier
{
std::vector<Callback*> m_Callbacks;
void AddCallback(Callback* cb) {m_Callbacks.push(cb); }
...
void ChangeNodules() {
for (iterator it=m_Callbacks.begin(); it!=m_Callbacks.end(); it++) {
(*it)->NodulesChanged();
}
}
};
我正在考虑将其更改为使用 boost 的信号和插槽,因为这将有助于减少被调用方被删除时悬挂指针的可能性等。然而,就目前而言,boost 的信号似乎更倾向于处理函数对象。调整我的代码以仍然使用回调接口但使用信号和插槽来处理连接和通知方面的最佳方法是什么?