2012-11-16 6 views
1

오류 코드를 기능에 매핑하는 간단한 관리자를 만들려고합니다. 그러나지도는 값을 복사하고 신호는 복사가 불가능하므로 해결책이 아닙니다. * 연산자가 boost :: function에서 차단되었으므로 shared_ptr 포인터의 맵을 사용할 수 없습니다.부스트 맵 : 부스트 기능 : 기능 정의

이 컬렉션을 저장하려면 어떤 컬렉션을 사용해야합니까? 당신은 항상지도 내부 구조체 및 저장 shared_ptr의 또는 unique_ptr 객체로 모든 것을 저장하거나 사용자 정의 술어를 사용하여 설정할 수 있습니다

답변

1

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(); 


}; 

}. 이것은 코드가 좀 더 자명하다.

+0

어떻게 이런 일을 할 것입니까? – Dr1Ku