Dynamisches Array von Objekten

8

Ich bin mir bewusst, dass ich etwas namens std::vector verwenden könnte, aber ich fürchte, das ist wegen der Kursbeschränkungen nicht möglich.

Ich muss ein dynamisches erweiterbares Array von Objekten erstellen. Das Array sollte wachsen und wachsen, wenn neue Objekte gespeichert werden müssen.

Hier ist die Klasse, zu der das Array gehört:

%Vor%

Die Methode "void add (Transaktion & amp; newTrans)" ist die, die ich brauche. Und ja, ich muss es im Pointer-Stil machen.

Bisher ist diese Methode völlig unvollständig und nicht einmal annähernd funktional. Ich habe mehrere verschiedene Möglichkeiten ausprobiert, aber am Ende mit einem Laufzeitfehler oder nur bollocks Ergebnis.

%Vor%

Ich möchte, dass die Methode ein Array von Transaction-Objekten erstellt und größer wird, während es weitere Objekte bekommt.

Ich hoffe, ich habe klar über mein Problem geschrieben und wünschte mir, jemand könnte mir eine gute Antwort geben. Ich habe versucht zu googeln, aber ich bin immer noch festgefahren - sonst hätte ich mir nicht die Mühe gemacht zu fragen: p

Auch wenn jemand etwas über Kopierkonstrukteure geben könnte, wäre ich sehr dankbar. In unserem Kursmaterial haben sie nicht einmal gezeigt, wie ein Copy-Konstruktor aussehen sollte. Genauso wie "Du brauchst Kopiergeräte für tiefes Kopieren, viel Glück!"

    
JKase 04.06.2011, 20:22
quelle

3 Antworten

5

Sie sollten eine Variable maxTransactions hinzufügen, die die zugewiesene Länge Ihres trans * -Arrays angibt, und sowohl ammountTransactions als auch maxTransactions mit 0 initialisieren.

Ihr Array würde automatisch seine Größe verdoppeln, wenn wir die Grenzen von trans erreichen würden

%Vor%

PS. Ich habe es direkt hier geschrieben, ich habe es nicht überprüft, ob es als Ganzes kompiliert wird oder den Code nicht debuggt. Aber ich präsentiere es als eine Idee, der Sie folgen können

Bearbeiten: Arbeitsbeispiel @ Ссылка

    
Matyas 04.06.2011, 20:35
quelle
1

Wenn Sie ein Objekt hinzufügen und das Array zu klein ist, müssen Sie ein neues mit der richtigen oder größeren Größe erstellen, die Daten kopieren, das alte löschen und durch das neue ersetzen.

Kopierkonstruktoren sind nur wie gewöhnliche Konstruktoren, nur dass sie ein Objekt desselben Typs verwenden. Denken Sie daran, Ihre Zeiger richtig zu behandeln, wenn Sie dies tun.

%Vor%     
CptRed 04.06.2011 20:43
quelle
0

Jetzt habe ich es endlich geschafft, dieses Rätsel zu lösen. Es stellte sich heraus, dass ich der Tatsache, dass meine Transaction-Objekte selbst ein dynamisches Array enthielten, nicht genug Aufmerksamkeit schenkte, so dass ich schließlich auf die Idee kam, eine Zuweisungsfunktion zu erstellen, um die Objekte zu kopieren. Ich dachte, ich würde meine Lösung teilen, nur für den Fall, dass jemand das gleiche Problem mit den gleichen begrenzten Werkzeugen angehen muss.

So sah es schließlich aus:

%Vor%

Und die Zuweisungsfunktion sieht folgendermaßen aus:

%Vor%

Ich habe meine endgültige Lösung auf die Antwort von Matyas gestützt, also schulde ich dir einen Freund! :) Danke auch an Alexandre C. zum Lesen!

Ich zähle nicht die Möglichkeit aus, dass es einen Fehler im Code geben könnte, aber zumindest kompiliert, läuft und produziert das korrekte Ergebnis. Fühlen Sie sich frei, darauf hinzuweisen, wenn Sie etwas finden, das nicht richtig ist.

    
JKase 05.06.2011 22:11
quelle

Tags und Links