Zugriffsverletzung wahrscheinlich verursacht durch Zeiger
-
Hallo liebes C++ Forum,
ich arbeite zur Zeit an einem kleinen Spiel bin jedoch noch recht neu in C++ und durchschaue Zeiger noch nicht zu 100%.Ich möchte einen MouseHandler erstellen und ihm einen Zeiger auf den SelectionHandler mitgeben, damit er auf dessen Funktionen zugreifen kann.
Sobald das Programm aber auf m_pSelectionHandler versucht zuzugreifen gibt es eine Zugriffsverletzung.Game.h SelectionHandler *pSelectionHandler; MouseHandler *pMouseHandler; Game.cpp //in einer initialisierungs funktion: pSelectionHandler = new SelectionHandler(); pMouseHandler = new MouseHandler(pSelectionHandler); MouseHandler.h MouseHandler(SelectionHandler *pSelectionHandler); private: SelectionHandler *m_pSelectionHandler; MouseHandler.cpp MouseHandler::MouseHandler(SelectionHandler *pSelectionHandler) { m_pSelectionHandler = pSelectionHandler; } //später in einer Funktion MouseEvent: if((GetEntityIdUnderMouse() != 0) && (m_pSelectionHandler)) // erste Bedingung klappt, beim Zugreifen auf m_pSelectionHandler knallts { m_pSelectionHandler->SetSelected(GetEntityIdUnderMouse()); }Ich hoffe ihr könnt mir helfen, denn ich such nun seit geraumer Zeit den Fehler

Gruß
Myosotis
-
Wo knallt es denn genau? Schon beim if oder beim Aufruf von SetSelected?
Wenn beim if so ist wahrscheinlich der this-pointer fehlerhaft. Ansonsten ist es m_pSelectionHandler.
Gründe dafür gibt es viele. Die können aus Deinem Minischnipsel nicht ermittelt werden. Schau mal, ob die Objekte vieleicht irgendwo gelöscht wurden.
mfg Martin
-
Benutze lieber Smart Pointer statt roher Zeiger - falls du überhaupt Zeiger benötigst. Könntest du nicht den SelectionHandler in Game "normal" erstellen und Referenzen rumreichen?