std::unordered_map 对 emplace 的访问冲突

std::unordered_map access violation on emplace

我有两个typedefs:

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

然后在我的 EventManager class 中添加它,就像这样:

EventCallbackContainer m_eventCallbackContainer;

我不知道有什么方法可以初始化地图,据我所知,我也不应该这样做。

EventManager 中,我调用了一个 addCallback 模板函数,然后将其放置到 std::unordered_map 中,但是当我这样做时,我遇到了访问冲突,查看VS watch 好像 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手表:

我不确定为什么会这样或者我该如何解决它。

如果您需要更多上下文,则项目整个代码库(不过不要觉得有义务看,它不打算作为代码审查):Github with codebase

我是傻了。显然我正在初始化一个 class,它在创建 EventManager 之前调用 addCallback。

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