Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » objekte und zeiger

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.11.2004, 15:41 Uhr
witrob



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.

C++:
#include ".\klasse.h"

Klasse::Klasse(int _index)
{
    index = _index;
    text = "bla";
}
Klasse::Klasse(){}

Klasse::~Klasse(void)
{
    
}





C++:

#include ".\ArrayOfKlasse.h"

ArrayOfKlasse::ArrayOfKlasse(void)
{
    array = new Klasse*[5];    
    index = 0;
    setNew();
    
}



C++:

#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++;
}




C++:
#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?




Bearbeitung von Pablo:

Bitte, nehmt euch die Zeit die TAGS richtig zu setzen, und für C/C++ benutze [cpp] Tags


Dieser Post wurde am 14.11.2004 um 16:46 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.11.2004, 19:10 Uhr
0xdeadbeef
Gott
(Operator)


Wo ist denn da was unverständlich? array[1] wird in ArrayOfKlasse ja nie initialisiert. Der Pointer zeigt irgendwo ins Nirvana, und dementsprechend wird seine Dereferenzierung nen segfault schmeißen. Mir ist auch nicht wirklich klar, was du mit diesem Klassendesign erreichen willst...es sieht mir jedenfalls sehr wild aus.

Oh, und vergiss nicht, die Objekte, die du per new auf dem Heap ablegst, nachher auch wieder zu löschen. Zum Beispiel:

C++:
int *i = new int;
int *a = new int[5];

// ...

delete i;
delete[] a;


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: