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!"
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 @ Ссылка
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%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.
Tags und Links c++