首頁 > 後端開發 > C++ > 如何在通用 `std::function` 物件中儲存成員函數指標?

如何在通用 `std::function` 物件中儲存成員函數指標?

Linda Hamilton
發布: 2024-12-23 20:39:10
原創
287 人瀏覽過

How to Store Member Function Pointers in Generic `std::function` Objects?

在通用std::function 物件中儲存成員函數指標

當嘗試使用以下方式在映射中儲存特定類別的成員函數指標時std::function 物件時,開發人員可能會遇到錯誤:「term 不能計算為採用 0個參數的函數。

問題的癥結在於非靜態成員函數需要隱式的「this」指標作為第一個參數。要修正這個問題,必須明確綁定第一個參數。

解:

std::function<void(void)> f = std::bind(&Foo::doSomething, this);
登入後複製

此方法有效地將「this」指標綁定為第一個參數,從而允許std::function 物件以正確捕獲成員函數。

處理函數參數:

對於帶參數的成員函數,必須指定佔位符來指示綁定參數的位置。

using namespace std::placeholders;
std::function<void(int, int)> f = std::bind(&Foo::doSomethingArgs,
                                                 this,
                                                 std::placeholders::_1,
                                                 std::placeholders::_2);
登入後複製

C 11 Lambda 語法:

如果編譯器支援C 11 lambda,則可以使用較簡潔的方法來利用:

std::function<void(int, int)> f = [=](int a, int b) {
    this->doSomethingArgs(a, b);
};
登入後複製

透過遵循這些技術,開發人員可以使用通用std::function物件有效地儲存和呼叫成員函數指標。

以上是如何在通用 `std::function` 物件中儲存成員函數指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板