Seltsames Verhalten in overloaded operator<<

  • In meiner generischen Klasse Heap überlade ich den Operator <<. Folgende Implementierung ist gegeben:


    Die Vorgehensweise sollte klar sein: ist der Heap nicht leer, so sollen seine Knoten ausgegeben werden - sonst soll nichts passieren.

    Das wirklich merkwürdige ist nun: wird an Stelle (1) nichts in den cout-Stream geschrieben (egal, ob heap.nodes.empty() == (true | false)), bekomme ich die Meldung "Speicherzugriffsfehler" auf stderr. EDIT: Meine vorherige Beschreibung des Fehlers war vielleicht nicht ganz eindeutig. Auf jeden Fall handelt es sich bei "Speicherzugriffsfehler" um einen Runtime-Error. Ich gebe diesen String natürlich nicht auf stderr aus.

    Kompiler: g++ 3.3

    Ich habe einige Zeit gebraucht um den Fehler zu reproduzieren, und konnte ihn auf diese Stelle einschränken. Weiss jemand, warum das so ist? Das kann doch wohl kaum ernst gemeint sein?

    Danke! Greets, Martin

  • wie wärs wenn du das mal in den gdb fütterst und schaust wo du den segfault bekommst und was ihn verursacht? die funktion die du gepostet hast schaut an sich ok aus. ev auch posten wie du sie genau verwendest.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!