2014-12-05 16 views
9

Próbuję użyć metody, która zajmujejak używać std :: funkcję <void(void)> wywołać metodę

std::function<void()> 

jako wejście. Niestety, nigdy wcześniej nie używałem tego typu danych i mam problemy z jego zrozumieniem. Wszystko, co muszę zrobić, to powiedz, gdy jest to nazywane, wykonaj metodę, na przykład:

std::function<void()> doThing = object.isMethod(); 

Chociaż ta składnia jest oczywiście nieprawidłowa. Czy ktoś może mi to wyjaśnić?

+0

Nie można powiedzieć „wykonać metodę”, trzeba powiedzieć „wykonać tę metodę _on obiekt_". Odpowiedź Mike'a pokazuje, jak uchwycić wskaźnik lub odwołanie do 'obiektu', aby metoda była wywoływana na _przy obiekcie. –

Odpowiedz

21

Można bind obiekt metody

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

lub użyć lambda

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

Świetne, dzięki – user3319320

Powiązane problemy