2014-12-05 48 views
9

我试图使用接受如何使用std ::函数<void(void)>调用一个方法

std::function<void()> 

作为输入的方法。不幸的是,我从来没有使用这种数据类型,我有理解它的问题。所有我需要做的是说,当它被称为执行的方法,例如:

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

虽然这句法显然是不正确的。有人可以向我解释这个吗?

+0

你不能说“执行法”,你说“执行方法_ON这目的_”。 Mike的答案显示了如何捕获对象的指针或引用,以便在_that object_上调用该方法。 – 2014-12-05 17:47:39

回答

21

你可以bind对象的方法

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

或使用lambda

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

辉煌,谢谢 – user3319320 2014-12-05 18:16:48

相关问题