エラーコードを関数にマップする単純なマネージャーを作成しようとしています。しかし、マップは値をコピーし、信号はコピーできないため、解決策ではありません。*演算子がboost::functionでブロックされているため、shared_ptrポインターのマップを使用できません。
これを保存するには、どのコレクションを使用する必要がありますか?
typedef boost::function<bool (shared_ptr<EngineEvent> event,long timeSinceEvent)> EngineErrorHandler;
typedef boost::signal<bool ( EngineErrorHandler )> ErrorSignal;
typedef std::map<EventErrorType,ErrorSignal> ErrorHandlers;
class ServiceErrorManager {
public:
static ServiceErrorManager* getInstance();
void registerErrorHandler(EngineErrorHandler& handler,EventErrorType subScribeTo);
void signalEngineEventfail(shared_ptr<EngineEvent> event);
private:
static ServiceErrorManager* m_pInstance;
ErrorHandlers errorTypeToSignal;
ServiceErrorManager();
~ServiceErrorManager();
};
}