1
我想创建一个功能对象,可以在稍后调用(回调)从 构建一个对象和该对象的成员函数。使用方法和对象创建功能对象
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();
它是简单的,如果我有一个兰巴功能使用它,但是这是一个有点开销,我想避免。
function<void(void)> f2([&a](){ a.AnyFunc(); }); // works fine
也许有更好的方法来获得可调用的对象?
使用lambda不应该添加任何开销。事实上,std :: function对象可能会比使用自动类型lambda增加更多开销。 – bames53
事实上 - lambdas比“bind”轻得多,而'function <>'会比两者都有更多的开销。 – ildjarn