wie mal jemand bei Microsoft sagt: "Ich weiß das es funktioniert, aber nicht warum...."
Kurze Einleitung: Ich habe mir in einem Vector ein Element gesucht, welches als Iterator mir zur Verfügung gestellt wird:
(Hintergund: Bereitstellung einer Methode um in einer Datenstruktur ein Element zu entfernen und das entfernte Element mir dann noch zur Verfügung zu stellen)
Code: Alles auswählen
using Ptr = std::unique_ptr<Node>; //unique_ptr auf die Klasse Node
Ptr detachChild(const Node& node) {
auto found = std::find_if(
mChildren.begin(),
mChlidren.end(),
[&] (Ptr p)
{
return p.get() == &node;
});
mChildren.erase(found);
...
}
Element wird aus dem Vector entfernt ... und nun will ich ja noch einen Zugriff darauf haben, ergo muss den Iterator irgendwie wieder zu einem unique_ptr "wandlen"
Code: Alles auswählen
{
...
Ptr result = std::move(*found);
return result;
}
Oder Funktioniert der Move-Operator nicht auf Zeiger / Iteratoren / Pointer(unique oder shared) ? Im Netz und bei meinen Referenzen habe ich da leider keine genaue Lösung gefunden.
Kann ja auch sein das das einfach eine Operation ist, die halt so ist und ich sie nun so hinehmen muss

Mit freundlichen Grüßen