1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Seltsames Verhalten in overloaded operator<<

  • duracell
  • 14. Dezember 2005 um 00:11
  • Unerledigt
  • duracell
    5
    duracell
    Mitglied
    Punkte
    220
    Beiträge
    40
    • 14. Dezember 2005 um 00:11
    • #1

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

    Code
    template <class K, class V, int heapType>
    ostream& operator<<(ostream &os, const Heap<K, V, heapType> &heap)
    {
        if (!heap.nodes.empty()) // nodes ist vom Typ std::map
        {
            // Ausgabe der heapnodes.
        }
    
    
        /* (1) */
    }
    Alles anzeigen


    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

  • fren
    4
    fren
    Mitglied
    Punkte
    160
    Beiträge
    32
    • 18. Dezember 2005 um 20:39
    • #2

    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.

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung