std :: unordered_map访问违规

时间:2016-10-23 00:22:22

标签: c++ access-violation unordered-map

我有两个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_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

1 个答案:

答案 0 :(得分:1)

我是愚蠢的。显然我正在初始化一个在创建EventManager之前调用addCallback的类。

自我注意:请记住检查this是否为NULL。