我有两个typedefs
:
typedef std::function<void(SDL_Event)> EventCallback;
typedef std::unordered_map<std::string, EventCallback> EventCallbackContainer;
在我的EventManager
课程中,我将其添加为:
EventCallbackContainer m_eventCallbackContainer;
我知道无法初始化地图,据我所知,我也不应该这样做。
在EventManager
我有一个我调用的addCallback
模板函数,然后它将其放入std::unordered_map
,但是当我接到违规时,我看到VS手表似乎std::unordered_map
是NULL
。
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);
}
我不确定为什么会这样,或者我如何解决它。
如果您需要更多上下文,请投影整个代码库(不要觉得有任何义务,但不打算作为代码审查):Github with codebase
答案 0 :(得分:1)
自我注意:请记住检查this
是否为NULL。