Merkwürdiges Verhalten beim Durchlaufen einer List per Iterator



  • Die wird folgendermaßen aufgerufen:

    void MapModel::loadMapFile(char *filename)
    {
      ...
      notify(NULL);
    }
    


  • Und MapModel hat nicht zufällig noch ein eigenes notify? Ich würde mal einen Debugger bemühen und gucken, was da genau aufgerufen wird.



  • Wie kann ich denn in C++ explizit eine Methode der Oberklasse aufrufen?
    Sowas wie "inherited notify" in Delphi z.B. (Geht das überhaupt aufgrund der Mehrfachvererbung?)



  • sunnyandy schrieb:

    Wie kann ich denn in C++ explizit eine Methode der Oberklasse aufrufen?
    Sowas wie "inherited notify" in Delphi z.B. (Geht das überhaupt aufgrund der Mehrfachvererbung?)

    So:

    struct Base
    {
       void function(){}
    };
    
    struct Derived : Base
    {
       void function(){}
    };
    
    Derived derivedObject;
    derivedObject.Base::function();
    


  • Hmm, es hat leider keine Wirkung gezeigt 😞

    ich schätze, es stimmt irgendwas mit dem Listenobjekt nicht. Welche Listentypen kann ich denn noch benutzen außer std::list ?



  • Ich habe das gleiche nun mit einem Vector von int-Objekten probiert,
    und nun gibt er aus, dass sich 4294906818 Elemente im Vector befinden, obwohl ich sie dort nicht reingetan habe...



  • Das sieht schwer nach einer Index oder Grenzüberschreitung aus...kann es sein dsa du irgendwo drüber iterierst ?



  • Gehe mit 'nem Debugger durch den Code. Ich bin mir sehr sicher, dass Du Deinen Container irgendwo zerbügelst.
    Mit dem Code, den Du hier reingestellt hast, kann man nicht mehr sagen.



  • Tachyon schrieb:

    Gehe mit 'nem Debugger durch den Code. Ich bin mir sehr sicher, dass Du Deinen Container irgendwo zerbügelst.
    Mit dem Code, den Du hier reingestellt hast, kann man nicht mehr sagen.

    Was heißt Container? Wie kann sowas passieren?

    Ich danke euch trotzdem für die tolle Hilfe! Dankeschön!
    Ich kann mir auch die Zahlen ausgeben lassen, die sich im Vector befinden, sie kommen wie nach dem Zufallsprinzip heraus.



  • sunnyandy schrieb:

    Tachyon schrieb:

    Gehe mit 'nem Debugger durch den Code. Ich bin mir sehr sicher, dass Du Deinen Container irgendwo zerbügelst.
    Mit dem Code, den Du hier reingestellt hast, kann man nicht mehr sagen.

    Was heißt Container? Wie kann sowas passieren?

    Ich danke euch trotzdem für die tolle Hilfe! Dankeschön!
    Ich kann mir auch die Zahlen ausgeben lassen, die sich im Vector befinden, sie kommen wie nach dem Zufallsprinzip heraus.

    Container sind die STL-Dinger, die Du benutzt. Also list, vector, deque usw.
    Du scheinst die Größe für Dein Vektor/Listen-Objekt aus einer uninitialisierten Variable zu holen.
    Einfaches Beispiel

    size_t size; //size wurde nicht initialisiert. Es steht irgendwas drin, von 0 bis 2^size_t-Bits
    std::vector<int> vec(size); //legt einen vektor an. Die Größe kann alles mögliche sein.
    

Anmelden zum Antworten