用方法和对象创建功能对象

时间:2011-11-17 14:35:14

标签: c++ c++11

我想创建一个可以在以后调用的函数对象(回调) 对象和该对象的成员函数。

class A
{
public:

void AnyMethod() { cout << "Hello" << endl; }
};

int main()
{
    A a;
    function<???>f1(&A::AnyFunc, &a); // ?????

    ...
    f1();
}

我有点困惑,因为创建一个线程非常简单:

thread t1 ( &A::AnyFunc, &a); 
...
t1.join();

如果我将它与lamba函数一起使用很简单,但这是一个我想避免的开销。

function<void(void)> f2( [&a](){ a.AnyFunc(); } ); // works fine

也许有更好的方法来获取可调用的对象?

1 个答案:

答案 0 :(得分:2)

std::function<void()> f1 = std::bind(&A::AnyMethod, &a);