私はEventクラスを持っています。 AddHandler(thisPtr, callback)
で私はthisPtr
とcallback
にtr1::bind
を使用し、最終的に私がリストを持っている:C++イベントでハンドラを実装する方法
typedef std::tr1::function<void(int&)> CallbackFunction;
std::list<CallbackFunction> m_handlers;
しかしtr1::function
が非匹敵する場合どのように私は、removeハンドラメソッドを実装することができますか?
オブジェクトポインタとコールバックからのマップをtr1::function
にして、等価オブジェクトポインタとコールバックポインタを持つポインタを削除してRemoveHandler
にする必要がありますか?これは安全なアプローチですか?
おそらく、あなたがすべき挿入されたオブジェクトのイテレータを返します。また、Boost.Signals2、libsigC++などをチェックしてください。 – kennytm