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