2016-10-23 14 views
0

에 unordered_map도 액세스 위반 나는 두 typedefs 있습니다 표준 : 설치하다

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

그리고 내 EventManager 클래스

난 그냥이로 추가 :

EventCallbackContainer m_eventCallbackContainer; 

가 나는를 초기화 할 수있는 방법을 알고 지도와 내가 그것을 이해했을 때 나는 없어야한다. EventManager에서

나는 그 다음 std::unordered_map로를 emplaces, 내가 부르는 addCallback 템플릿 기능을 가지고 있지만 내가처럼 나는 VS 찾고, 액세스 위반을 얻을 std::unordered_mapNULL처럼 보인다보세요.

다음 addCallBack 기능 : 시계 VS

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

: enter image description here

나는이 사건이 왜 나 내가 그것을 고칠 수있는 방법을 모르겠습니다. 당신이 더 많은 컨텍스트를 필요로하는 경우

프로젝트 전체 코드베이스 (그것이 코드 검토로 구성 아니지만 보면 너무하지 않으셔도됩니다) : Github with codebase

+2

'this'는 null입니까? – user2357112

+0

한숨, 네, 그렇게 보입니다. –

+1

MY BAD, 문제가 발견되었습니다. 친절하게 답변드립니다. addCallback을 호출하는 내 eventManager 앞에 또 다른 클래스를 초기화하면서 EventManager가 존재하기 전에 호출하는 것을 의미합니다. 감사합니다. –

답변

1

하는 내가 바보했다. 분명히 EventManager가 생성되기 전에 addCallback을 호출하는 클래스를 초기화하고있었습니다.

개인 정보 참고 : this이 NULL인지 확인하십시오.

관련 문제