在單一類別的std::function 映射中儲存成員函數指標
當嘗試儲存指向特定成員函數的函數指標時在std::function 映射中的類別中,了解使用std::function映射呼叫非靜態成員函數的要求至關重要object.
在提供的程式碼中,錯誤源自於 std::function
修正後的程式碼片段將是:
#include <functional> class Foo { public: void doSomething() {} void bindFunction() { // Correct std::function<void(Foo*)> f = &Foo::doSomething; } };
要進一步將函數與參數綁定,可以使用 C 佔位符或 C 11 lambda。以下是這些方法的範例:
使用佔位符:
using namespace std::placeholders; std::function<void(Foo*, int, int)> f = std::bind(&Foo::doSomethingArgs, this, _1, _2);
使用Lambda (C 11):
std::function<void(Foo*, int, int)> f = [=](Foo* foo, int a, int b) { foo->doSomethingArgs(a, b); };
以上是如何在`std::function`映射中正確儲存成員函數指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!