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


Anmelden zum Antworten