Ich möchte eine Liste von Objekten in einem std::vector
speichern, aber die Objekte enthalten eine Referenz und können nicht zugewiesen werden. Ich kann das Objekt jedoch kopieren. Die einzige Option, die ich mir vorstellen kann, ist die Verwendung von Zeigern, um die Objekte zu umbrechen und die Zeiger neu zu setzen, wenn sie zugewiesen werden müssen, aber die Syntax würde die Lesbarkeit erheblich reduzieren, besonders wenn Iteratoren verwendet werden Alternative.C++ Verwendung von nicht zuweisbaren Objekten in Vektor
funktioniert nicht:
std::vector<MyObject> myVector;
//fill the vector
//...
myVector[1] = object1;
Intelligente Zeiger Opfer Lesbarkeit:
std::vector<std::unique_ptr<MyObject>> ptrVector;
//fill the vector
//...
ptrVector[1] = std::unique_ptr<MyObject>(new MyObject(object1));
es andere Methoden unassignable Objekte in einem std::vector
zu benutzen?
C 11 ++ Unter der Annahme, würde mit 'std :: reference_wrapper' anstelle von herkömmlichen Referenzen eine Lösung sein? – jogojapan
Ich glaube nicht, dass Sie die 'std :: move' in der letzten Codezeile benötigen, da' std :: unique_ptr (...) 'ein rvalue ist. –
@ DavidRodríguez-dribeas Oh ja, das in der Frage behoben. –