带有提升:函数定义的升压:信号图

A map of boost:signals with boost:function definition

本文关键字:信号 函数 定义      更新时间:2023-10-16

我正在尝试创建一个简单的管理器,它将错误代码映射到函数。但是,由于地图复制了值并且信号不可复制,因此这不是解决方案。我无法使用shared_ptr指针的映射,因为 * 运算符在 boost::function 中被阻止。

我应该使用哪个集合来存储此集合?

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

您始终可以将所有内容存储到结构中,并使用自定义谓词将shared_ptr或unique_ptr对象存储在映射或集中。这似乎也会使您的代码更加不言自明。