von Objekt auf Objekt zugreifen



  • Du hast ja nur die Zeiger deklariert, ohne ihnen Speicher zuzuweisen.

    Root* mRoot = new Root(); // in die Klammern könnte man noch Konstruktorargumente schreiben
    

    Nicht vergessen, am Schluss wieder mit delete zu löschen!



  • Hab ich gemacht, fehler bleibt aber 😕





  • ...



  • Okay, diesen Topic st dann geschlossen, thx for help 🙂



  • Code-Walker schrieb:

    Ich vemute mal mir will niemand mehr helfen?

    Hast du einen Komplex? Du kannst nicht erwarten, dass du zwei Minuten nach deiner Frage gleich eine Antwort gestellt bekommst.

    Ich kann mir nicht vorstellen, dass das mit new nicht geht. Wenn, dann ist etwas an der Initialisierung fehlgeschlagen (wahrscheinlich im Konstruktor) oder du zerschreibst dir den Speicher noch nachträglich.

    Geh mal mit dem Debugger (im Debug-Modus) schrittweise durch, und überprüfe, von wo an kein gültiger Wert mehr besteht, bzw. ob überhaupt einmal eine korrekte Initialisierung stattfindet.

    Edit: Dir scheint auf spieleprogrammierer.de inzwischen geholfen worden zu sein. Das new muss man natürlich bei allen Zeigern ausführen...

    Und wie gesagt, vergiss kein delete , um den Speicher wieder freizugeben, wenn du ihn nicht mehr brauchst.



  • Nexus schrieb:

    Code-Walker schrieb:

    Ich vemute mal mir will niemand mehr helfen?

    Hast du einen Komplex? Du kannst nicht erwarten, dass du zwei Minuten nach deiner Frage gleich eine Antwort gestellt bekommst.

    Ich kann mir nicht vorstellen, dass das mit new nicht geht. Wenn, dann ist etwas an der Initialisierung fehlgeschlagen (wahrscheinlich im Konstruktor) oder du zerschreibst dir den Speicher noch nachträglich.

    Geh mal mit dem Debugger (im Debug-Modus) schrittweise durch, und überprüfe, von wo an kein gültiger Wert mehr besteht, bzw. ob überhaupt einmal eine korrekte Initialisierung stattfindet.

    Schau mal meinem Post auf sp.de an. Dort habe ich den Fehler gepostet.



  • drakon schrieb:

    Schau mal meinem Post auf sp.de an. Dort habe ich den Fehler gepostet.

    Ich habs gesehen 😉

    Naja, damit habe ich eigentlich nicht gerechnet... Etwas Mitdenken hätte ich schon erwartet, sodass man den Fehler nicht nur an einer Stelle behebt... 🙄



  • hab auf Spieleprogrammierer noch net nachgesehen, aber ich habs auch xD

    Root* mRoot = new Root();
    A* mA = new A();
    B* mB = new B();
    

    Außerdem haben Konstruktor und destuktor gefehlt, wobei der Konstruktur für den Run time error verantwortlich war! dankeschön 🙂



  • Code-Walker schrieb:

    Außerdem haben Konstruktor und destuktor gefehlt, wobei der Konstruktur für den Run time error verantwortlich war! dankeschön 🙂

    Du brauchst den Konstruktor und Destruktor nicht selber zu implementieren. Wenn du sie weglässt, erzeugt sie der Compiler standardmässig. Der Runtime-Error lag wohl eher am Zugriff auf den nicht initialisierten Zeiger.

    P.S.: Hast du jetzt ein delete (besser gesagt 3, für jedes new eines)? :p


Anmelden zum Antworten