[STL - Map] Membervariable initialisieren



  • Hallo,

    ich habe eine Klasse, die eine Membervariable des Typs map enthält:

    typedef std::map<std::string, Klasse*> TolleMap;

    class TolleKlasse
    {

    public:

    private:
    TolleMap tm;
    };

    Möchte ich nun in meinem CPP file die map verwenden so ist diese nicht sauber initialisert. Als Nodecount steht im Debugger eine Zahl im Millionenbereich. Jede Art des Zugriffes schlägt fehl. tm.clear() geht nicht. tm.empty() gibt false zurück.
    Ändere ich den Wert für nodecount im Debugger direkt auf 0, so funktioniert der Zugriff tadellos.

    Auch tm = TolleMap() in einer Methode schlägt fehl.

    Interessanterweise wird genau auf dieselbe Art und Weise eine Map in einer anderen Klasse verwendet. Ich kann keinen Unterschied entdecken.

    Wo ist mein Denkfehler?

    Danke
    Kreatief



  • Hi,

    soweit ist da erstmal nichts Verwerfliches dran.

    Laß doch mal ein wenig mehr sehen.

    Gruß,

    Simon2.



  • Hast du ein echtes, lebendes Objekt von TolleKlasse, oder vielleicht nur einen uninitialisierten Zeiger?



  • Korrekt MFK.

    Ich habe gerade mit jemanden Codereview betrieben und dabei ist mir aufgefallen, dass ich kein echtes Objekt von TolleKlasse angelegt habe. Daher kann die Map auch nicht initialisiert werden.

    Darauf wäre ich alleine nie gekommen. Mir fiel es erst auf, als ich jemanden den gesamten code erklärt habe.

    Vielen Dank!
    DKT



  • MFK schrieb:

    Hast du ein echtes, lebendes Objekt von TolleKlasse, oder vielleicht nur einen uninitialisierten Zeiger?

    War auch meine Vermutung ... aber anhand des obigen Codes kann man das nunmal nicht erkennen.

    Gruß,

    Simon2.


Anmelden zum Antworten