C ++ 11 Schließung shared_ptr

8

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

    
José 09.10.2015, 08:41
quelle

4 Antworten

5

Es sollte etwas wie

sein %Vor%

Aber tatsächlich brauchen Sie möglicherweise nicht shared_ptr , da function erstellt werden kann von nullptr .

%Vor%     
ForEveR 09.10.2015, 09:03
quelle
4

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

%Vor%

In Ihrem Fall ist X der Typ std::function und% someY ist Ihr Lambda. Sobald Sie das haben, ist es ziemlich einfach:

%Vor%     
Arne Mertz 09.10.2015 09:09
quelle
1

Sie können das auf zwei Arten tun:

%Vor%

Sie könnten auch die folgenden Fragen nützlich finden:

SingerOfTheFall 09.10.2015 09:04
quelle
0

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.

    
Velkan 10.08.2016 13:34
quelle

Tags und Links