2016-10-23 8 views
0

устанавливать У меня есть два typedefs:станд :: unordered_map нарушение прав доступа на

typedef std::function<void(SDL_Event)> EventCallback; 
typedef std::unordered_map<std::string, EventCallback> EventCallbackContainer; 

И в моем EventManager классе я добавляю его так же, как это:

EventCallbackContainer m_eventCallbackContainer; 

Я не знаю, как инициализировать и, как я понял, мне тоже этого не следовало.

В EventManager У меня есть функция в addCallback шаблон, который я называю, тогда emplaces его в std::unordered_map, но как я могу получить нарушение прав доступа, глядя на VS смотреть это кажется, что std::unordered_mapNULL является.

addCallback функция:

template<class Class> 
inline void EventManager::addEventCallback(std::string gameStateID, void(Class::* func)(SDL_Event), Class* instance) 
{ 
    EventCallback callback = std::bind(func, instance, std::placeholders::_1); 
    m_eventCallbackContainer.emplace(gameStateID, callback); 
} 

VS часы: enter image description here

Я не знаю, почему это так и как я могу это исправить.

Проекты Вся кодовая, если вам нужно больше контекста (не чувствовать себя обязанными выглядеть слишком, хотя, он не предназначен в качестве Просмотр Кода): Github with codebase

+2

Is 'this' null? – user2357112

+0

Вздох, да, кажется, так, позвольте мне взглянуть дальше. –

+1

MY BAD, нашел проблему, спасибо, добрый anon. Я инициализировал другой класс перед моим eventManager, который вызывает addCallback, то есть он вызывает его до того, как EventManager даже существует, опять же, спасибо! –

ответ

1

я был глуп. По-видимому, я инициализировал класс, который вызывает addCallback до создания EventManager.

ПРИМЕЧАНИЕ ДЛЯ САМ: Не забудьте проверить, является ли this NULL.