Ich wollte einen Vektor einer Unterklasse von QGraphicsRectItem mit dem Namen MyRect erstellen. Dieser Vektor wird in MyClass initialisiert:QT-Elemente bei der Vektorinitialisierung. Wie löst man das Privatkopie-Konstruktor-Problem?
MyClass::MyClass() : myVector_(80, std::vector<MyRect>(60, MyRect(true,true)))
...
erfuhr ich, dass Vektor-Konstrukte das erste Element und kopiert sie dann mit dem Copy-Konstruktor. Das Problem ist, dass der Kopierkonstruktor von QGraphicsRectItem privat ist und dies nicht funktioniert. (Sehr lange Fehlermeldung, eine Stunde googeln)
Jetzt habe ich drei mögliche Lösungen wie ich es sehe:
1.) Machen Sie eine for-Schleife und bevölkern myVector mich im Konstruktor Körper.
1b.) Verwenden Sie nur ein normales Array, da es trotzdem statisch bleibt.
2.) Verwenden MyRect * statt MyRect als Inhalt von myVector (manuelle Speicherzuordnung -> schlecht)
3.) Verwenden QVector die Object * standardmäßig verwendet und verwaltet den Speicher für mich.
Danach mindestens eine Stunde zu verbringen auf die Lösung würde Ich mag, von Ihnen zu hören, wenn es andere gute Möglichkeiten sind oder was Sie denken, ist die beste Lösung . Ich bin kurz davor, Vektoren dafür fallen zu lassen und nur Arrays zu verwenden.