Ich habe zwei typedefs
:std :: unordered_map Zugriffsverletzung auf emplace
typedef std::function<void(SDL_Event)> EventCallback;
typedef std::unordered_map<std::string, EventCallback> EventCallbackContainer;
Und in meinem EventManager
Klasse ich nur hinzufügen, wie folgt aus:
EventCallbackContainer m_eventCallbackContainer;
ich von keiner Weise kennen ein initialisieren Karte und wie ich es verstanden habe, sollte ich auch nicht haben.
Im EventManager
Ich habe eine addCallback
Template-Funktion, die ich anrufe, es emplaces es dann in die std::unordered_map
aber wie ich mich eine Zugriffsverletzung erhalten, an dem VS sehen suche es scheint, wie die std::unordered_map
NULL
ist.
Die addCallback Funktion:
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);
}
Ich bin nicht sicher, warum dies der Fall ist, oder wie ich es beheben könnte.
Projekte gesamte Code-Basis, wenn Sie mehr Kontext benötigen (fühlen sich nicht verpflichtet, obwohl zu sehen, ist es nicht als Codereview soll): Github with codebase
Ist 'das' null? – user2357112
Seufz, ja scheint so, lass mich dann noch einen Blick darauf werfen. –
MEIN SCHLECHTES, fand das Problem, danke, nett anon. Ich initialisierte eine andere Klasse vor meinem eventManager, die addCallback aufruft, was bedeutet, dass sie sie aufruft, bevor der EventManager überhaupt existiert. Danke nochmal! –