Was ist die Syntax zum Erstellen von Heap zugewiesene Schließung verwalten von shared_ptr. Ich möchte Schließungen an Funktionen übergeben und in der Lage sein, nullptr zu übergeben. Scheint so, als ob ich ein shared_ptr< ::std::function<void()>
benutze, aber ich kann die Syntax nicht finden, um das von einem Lambda-Ausdruck zu initialisieren
Im Allgemeinen möchten Sie eine shared_ptr<X>
über make_shared
erstellen, indem Sie das Objekt X
mit einem Y
-Objekt initialisieren. Im Allgemeinen ist der Code dafür
In Ihrem Fall ist X
der Typ std::function
und% someY
ist Ihr Lambda. Sobald Sie das haben, ist es ziemlich einfach:
Sie können das auf zwei Arten tun:
%Vor%Sie könnten auch die folgenden Fragen nützlich finden:
Ich bevorzuge die Verwendung von shared_ptr innerhalb des Funktionsobjekts.
%Vor%Die Daten für den Abschluss befinden sich also auf dem Heap und werden gezählt, während der Handle kopiert und weitergegeben werden kann. Die Daten werden bereinigt, wenn das letzte Handle zerstört wird.