Programm wird fehlerfrei kompiliert, stürzt aber ab
-
Ich habe ein Programm geschrieben, in dem ein Inventar erschaffen wird, welches mit Gegenständen der Struktur "Gegenstand" belegt werden kann. Dieses Programm wird problemlos kompiliert, stürzt aber beim Programmstart ab.
Kann man da im Quelltext was richten?
#include <iostream> using namespace std; struct Gegenstand { string Typ; string Name; string Wertbeschreibung; int Wert; }; int main() { Gegenstand Inventar[10]; for(int i = 0; i <= 10; i++) { Inventar[i].Typ = "leer"; } // Brot Gegenstand Brot; Brot.Typ = "Lebensmittel"; Brot.Name = "Brot"; Brot.Wertbeschreibung = "Lebensenergie"; Brot.Wert = 10; Inventar[0] = Brot; for (int i = 0;i <= 10 ; i++) { if (Inventar[i].Typ != "leer") { cout << Inventar[i].Typ << " - " << Inventar[i].Name << ": " << Inventar[i].Wertbeschreibung << " + " << Inventar[i].Wert << '\n'; } else { cout << "leer" << '\n'; } } }
-
Bleib halt innerhalb der Array-Grenzen.
-
Zähl mal von 0 bis 10 und mach bei jeder Zahl, die du sagst, einen Strich auf ein Blatt Papier. Wie viele Striche hast du dann insgesamt gemacht?
-
Und als Folgerung aus diesem Fehler: benutze std::vector mit Iteratoren und stecke keine "leeren" Gegenstände hinein.
-
Vielen Dank für eure Antworten, das Problem bestand tatsächlich, darin, daß ich einem Element, was nicht existiert, einen Wert zuweisen wollte. Nun funktioniert es!
-
Ein paar Tipps, zum nachschlagen:
range-based-for
std::vector
overloading >> and << operator
RAII/(default) constructor
-
wenn er 0...10 statt 0...9 falsch macht, braucht er sich mit operator overloading und RAII gar nicht erst zu beschäftigen. Das kommt erst sehr viel später.