Krisi K. schrieb:
> Woran liegt das?
Mit "new Klasse" wird nur genau ein Objekt erzeugt. D.h. Klasse[0] (was
identisch zu *Klasse ist) funktioniert, aber bereits Klasse[1] zeigt auf
nicht initialisierten Speicherbereich.
Du möchtest vermutlich "new Klasse[anzahl]" verwenden, wobei die Anzahl
der zu erzeugenden Objekte bekannt sein muss.
Vorsicht: Mit "new x[c]" erzeugte Mengen von Objekten dürfen nicht mit
"delete", sondern nur mit "delete[]" wieder gelöscht werden, also z.B.
"Klassen = new Klasse[9]; /* ... */ delete[] Klassen;".
Grundsätzlich, d.h. wann immer es geht, sollte in C++ (worum es hier
doch geht, oder?) Gebrauch von der Standardbibliothek gemacht werden, da
man sich so die ganzen Pointer-Geschichten sparen kann; d.h. z.B.
"std::vector<Klasse> Klassen(anzahl); /* ... */".
Der Vorteil ist (a) dass man nicht vergessen kann, Speicher wieder
freizugeben und (b) dass es weniger einfach ist, auf nicht
initialisierten Speicher zuzugreifen. Beides könnte zu schwer
nachvollziehbaren und u.U. kaum zu reproduzierenden Fehlern führen.