2014-12-05 5 views
9

Ich versuche, eine Methode zu verwenden, diewie std :: function <void(void)> verwenden, um eine Methode aufzurufen

std::function<void()> 

als Eingabe verwendet. Leider habe ich diesen Datentyp noch nie benutzt und habe Probleme damit, das zu verstehen. Alles was ich brauche, es zu tun zu sagen, wenn es ein Verfahren auszuführen, zum Beispiel genannt:

offensichtlich nicht korrekt ist
std::function<void()> doThing = object.isMethod(); 

Obwohl diese Syntax. Kann mir bitte jemand das erklären?

+0

Sie nicht „ausführen, um eine Methode“ sagen kann, haben Sie eine Methode _on dies zu sagen „execute Objekt_". Mikes Antwort zeigt, wie man einen Zeiger oder eine Referenz auf "Objekt" erfasst, so dass die Methode auf _das Objekt_ aufgerufen wird. –

Antwort

21

Sie könnten das Objekt an die Methode bind

std::function<void()> doThing = std::bind(&type::isMethod, &object); 

oder verwenden Sie ein lambda

std::function<void()> doThing = [&]{object.isMethod();}; 
+0

Brilliant, Danke – user3319320

Verwandte Themen