Feld aus Objekten einer Klasse

Hi Experten,

gibt es eine Möglichkeit mit einer Methode einer Klasse
festzustellen, das wievielte Objekt der Klasse das jetzt gerade
ist?
Problem: ich habe ein Feld aus Objekten einer Klasse und der
Index des aktuellen Feldes dient mir als „laufende Nummer“.
Versucht hatte ich schon in diesem Zusammenhang den „this“
Operator mit ins Spiel zu bringen, aber damit bekomme ich ja
nur einen Zeiger auf den Anfang des aktuellen Objektes und
nicht auf den Anfang des Feldes der Objekte…

Als Workaround habe ich eine Statische Variable in der Klasse
definiert und eine Methode, die aus main aufgerufen wird um
diese statische Variable mit der laufenden Nummer zu fuellen…

Hat vielleicht jemand Rat das eleganter zu lösen?

thx micha

Hi,

das mit der statischen Variable ist schon gut!
nur solltest du sie im konstruktor hochzählen mit ++ und im destruktor wieder herunter zählen mit --!

Mfg. Frank

Hi Frank,

aber dann hab ich doch das Problem, dasz der Konstruktor beim
Anlegen des Array schon bis 10 hochzaehlt, obwohl ich doch die
Daten in das erste Objekt des Arrays erst spaeter eingebe?

Jetzt bin ich noch auf ein Problem gestoszen: aus einer Methode
der Klasse sollen Kopien der Variablen der Klasse an das
Hauptprogramm zurueck uebergeben werden. Da dort u.a. char
Arrays dabei sind wollte ich, um einer Speicherverletzung zu
entgehen deren groesse in der Methode abpruefen. Leider Bekomme
ich natuerlich wahlweise nur die groesze des Elements auf das
der Pointer (char=1) zeigt oder die Groesze des Pointers (unter
linux 4 Byte). Gibt es eine Möglichkeit in der Methode die
Größe der uebergebenen Felder abzupruefen bzw. alternativ
soviel speicher wie benoetigt zu allocieren?

micha

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Bei einem Buffer wie Deinem Char-Array musst du immer die Groesse des Buffers extra mit angeben. Das gilt auch fuer Felder oder Arrays, die als Objekte realisiert sind. Die haben intern auch einen Buffer und eine weiteren Membervariablen, die die groesse des Buffers angibt. Fragt man die Groesse des Arrays ueber die Methode ab (z.B. getSize), dann wird der Wert der membervariable geliefert.

Zum Ersten:

Du solltest kein Array von Objekten angelegen, sondern besser ein Array von Pointer auf solche Objekte. Denn wenn du Dein Array initialisierst, dann werden auch gleich die Konstruktoren der Objekte als Elemente des Array mit angelegt, all die weil der Speicherbedarf bekannt sein muss.

Besser, du legst erst ein Objekt dynamisch an kurz bevor du es dem Array zufuegen moechtest.