C ++ - Lambda-Ausdruck, Capture-Klausel und Klassenmitglieder

8

Ich verwende PPL und parallel_for-Syntax, um eine for-Schleife zu haben. In der Capture-Klausel habe ich 3 Variablen, eine davon ist ein Klassenmitglied. Aufgrund des Vorhandenseins eines Klassenmembers unter Variablen in der capture-Klausel liegt ein Kompilierungsfehler vor. Wenn ich jedoch dieses Klassenmitglied in lambda body habe, kompiliert es auch nicht, und der angegebene Fehler besagt, dass die Variable im umschließenden Bereich in der capture-Klausel enthalten sein sollte. Wie geht es weiter? Soll ich das variable Mitglied vorher in eine lokale Variable kopieren und in der capture-Klausel übergeben?

Hier ist der Code, mit formulaCommand das Klassenmitglied.

%Vor%

Danke!

    
octoback 30.04.2012, 07:27
quelle

1 Antwort

7

Sie müssen this erfassen, um auf die Elementvariablen zuzugreifen (denken Sie daran, dass formulaCommand äquivalent zu this->formulaCommand ist).

%Vor%

(BTW, Sie sollten wahrscheinlich einen intelligenten Zeiger ( unique_ptr<MLEquationCommand> ) anstelle von% delete -ing den rohen Zeiger command_ verwenden.)

    
kennytm 30.04.2012, 07:30
quelle