【发布时间】:2012-01-11 16:58:39
【问题描述】:
我有一个事件类。在AddHandler(thisPtr, callback) 中,我在thisPtr 和callback 上使用tr1::bind,最终我有一个列表:
typedef std::tr1::function<void( int& )> CallbackFunction;
std::list< CallbackFunction > m_handlers;
但是,如果 tr1::function 不可比较,我该如何实现删除处理程序方法?
我是否应该保留从对象指针和回调到tr1::function 的映射,并删除具有相等对象指针和回调指针到RemoveHandler 中的参数的映射?这是一种安全的方法吗?
【问题讨论】:
-
也许你应该只返回插入对象的迭代器。另外,检查 Boost.Signals2、libsigc++ 等。