Objekte und Zeiger
-
Ich habe hier, glaube ich, ein Verständnisproblem was Objekte in cpp angeht. Irgendwie gehen mir zeiger oder objekte "veroren". Daraufhin stürzt das Programm ab.(Unbehandelte Ausnahme...Zugriffsverletzung-Leseposition:...).An diesem Beipsiel sollte erkennbar sein was ich meine.
#include ".\klasse.h" Klasse::Klasse(int _index) { index = _index; text = "bla"; } Klasse::Klasse(){} Klasse::~Klasse(void) { } [code] #include ".\ArrayOfKlasse.h" ArrayOfKlasse::ArrayOfKlasse(void) { array = new Klasse*[5]; index = 0; setNew(); } ArrayOfKlasse::~ArrayOfKlasse(void) { } void ArrayOfKlasse::printArray() { printf(array[0]->text);//Objekt durch Konstruktor von Klasse erzeugt->kein Problem printf(array[1]->text);//Objekt NICHT durch Konstruktor von Klasse erzeugt->Programm stürzt ab } void ArrayOfKlasse::setNew() { array[index] = new Klasse(index); index++; }
#include "ArrayOfKlasse.h" main() { ArrayOfKlasse *klassen = new ArrayOfKlasse; klassen->printArray(); }
Das vom Konstruktor von ArrayofKlasse erzeugte Objekt stellt kein Problem. aber das von main() lässt das Programm abstürzen.
wo liegt mein fehler?
-
Du erzeugst nur für den ersten Zeiger im Array ein Objekt, und wunderst dich, dass du nicht über den zweiten Zeiger auf ein Objekt zugreifen kannst?
-
[edit]SINNLOS[/edit]
-
Hi!
So sollten alle Elemente auf einen Speicherbereich zeigen:
void ArrayOfKlasse::setAll() // Setze alle Elemente { for(; index<5; ++index) array[index] = new Klasse(index); }
Code-Hacker