Forum: PC-Programmierung C++ / Referenz auf *std::unique_ptr


von Timm R. (Firma: privatfrickler.de) (treinisch)


Lesenswert?

Hallo,

ist das legal oder nicht?
1
        std::unique_ptr<Patch> newPatch = std::make_unique<Patch>();
2
3
        std::unique_ptr<GUIPlayModePatchComponent> hilf = std::make_unique<GUIPlayModePatchComponent>(*newPatch);
4
        _midiPatches.emplace_back(std::move(newPatch));

meine Vorstellung wäre, dass das einwandfrei ist, schließlich wird ja 
nur der Pointer gemoved, aber nicht das auf dem
Heap allozierte Patch Objekt. Würde aber gern auf Nummer sicher gehen.


Vielen Dank für einen kurzen Hinweis.

 Timm

von Heiko L. (zer0)


Lesenswert?

Du hast da 2 unique_ptr auf das selbe Objekt. Das kann nicht 
funktionieren.

von Timm R. (Firma: privatfrickler.de) (treinisch)


Lesenswert?

Sorry, hab etwas vergessen:

der GUIPlayModePatchComponent Konstruktor ist

GUIPlayModePatchComponent(Patch&)

vlg
 Timm

von Heiko L. (zer0)


Lesenswert?

Achso, sorry...
Ja, unique_ptr sollten ohne Probleme gemoved werden können. Ist wie du 
das schreibst: Der Zeiger und das Gezeigte sind 2 unterschiedliche 
Objekte mit unterschiedlicher Lifetime.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.