Zwischenstände einer QList in einer weiteren QList anlegen
-
Hallo,
ich arbeite zur Zeit an einem Projekt in dem ich eine Klasse mit zwei Zeigern auf QLists erzeuge. QList A beinhaltet mehrere Zeiger auf Objekte. Der Zustand der Objekte ändert sich zyklisch. Nun möchte ich nach Änderung der Zustände den aktuellen Zustand von QList A an QList B hängen. Nachdem der Zyklus beendet wurde möchte ich QList B mit n QLists A in einer Datenbank abspeichern.
Wie kann ich das am effizientesten umsetzen?
-
Hallo,
ich arbeite zur Zeit an einem Projekt in dem ich eine Klasse mit zwei Zeigern auf QLists erzeuge. QList A beinhaltet mehrere Zeiger auf Objekte. Der Zustand der Objekte ändert sich zyklisch. Nun möchte ich nach Änderung der Zustände den aktuellen Zustand von QList A an QList B hängen. Nachdem der Zyklus beendet wurde möchte ich QList B mit n QLists A in einer Datenbank abspeichern.
Wie kann ich das am effizientesten umsetzen?
@henrik2016 Mir ist nicht klar was die QLists mit den Zuständen der Objekte zu tun haben. Die enthalten ja Zeiger auf diese Objekte, nicht Objekte selbst.
Die Dokumentation enthält benötige Informationen:
- https://doc.qt.io/qt-5/qlist.html#append-1
- https://doc.qt.io/qt-5/qtsql-index.html (ich nehme an, dass eine SQL Datenbank gemeint ist)
-
@jsulm Vielleicht habe ich mich nicht genau ausgedrückt.
Die Objekte, worauf die die Zeiger zeigen, besitzen Member Variablen, die sich zyklisch ändern. Die Änderungen möchte ich zwischenspeichern.
-
@jsulm Vielleicht habe ich mich nicht genau ausgedrückt.
Die Objekte, worauf die die Zeiger zeigen, besitzen Member Variablen, die sich zyklisch ändern. Die Änderungen möchte ich zwischenspeichern.
@henrik2016 Siehe die Links zu der Dokumentation, die ich vorher gepostet habe.
-
@jsulm Mein Problem dabei ist, dass somit nur die Zeiger und nicht worauf sie zeigen anhängt werden. Somit zeigt jede einzelne QList A in QList B auf das Gleiche. Daher bräuchte ich etwas wie eine tiefe Kopie, die die Values der Objekte mitkopiert. Allerdings weiß ich nicht wie ich das umsetzen soll.
-
@jsulm Mein Problem dabei ist, dass somit nur die Zeiger und nicht worauf sie zeigen anhängt werden. Somit zeigt jede einzelne QList A in QList B auf das Gleiche. Daher bräuchte ich etwas wie eine tiefe Kopie, die die Values der Objekte mitkopiert. Allerdings weiß ich nicht wie ich das umsetzen soll.
@henrik2016 said in Zwischenstände einer QList in einer weiteren QList anlegen:
Mein Problem dabei ist, dass somit nur die Zeiger und nicht worauf sie zeigen anhängt werden
Und das ist genau was ich vorher schon gemeint habe: eine QList mit Zeigern hilft nicht Zwischenstände zu sichern.
Implementiere in der Klasse Copy-Constructor und Assignment-Operator und speichere entweder direkt die Instanzen statt Zeigern in QList, oder erstelle neue Instanzen (neueInstanz = alteInstanz) um Zustand zu sichern und speichere dann Zeiger auf diese neuen Instancen in QList.
-
Nur eine kleine Warnung, weil es in die Richtung geht.
@henrik2016 wenn deine Klasse direkt von QObject abgeleitet ist, kannst du sie nicht klassisch kopieren.
Der Copy-Operator ist deaktiviert. -
@jsulm @J-Hilk Danke für eure Hilfe. Durch den Vorschlag mehrere Instanzen zu machen ist mir eine Lösung für meinen speziellen Fall eingefallen. Ich nutze nun eine dritte QList, die als Default Liste dient, um neue Instanzen anzulegen.