Карта буста: сигналы с бустом: определение функции

Я пытаюсь создать простой менеджер, который будет отображать коды ошибок для функций. Но поскольку карта копирует значения, а сигнал не копируется, это не является решением. Я не могу использовать карту указателей 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();};

}

1

Решение

Вы всегда можете хранить все в структуре и хранить объекты shared_ptr или unique_ptr на карте или в наборе с использованием пользовательского предиката. Похоже, это сделает ваш код немного более понятным.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]