首頁 > 後端開發 > C++ > 如何將 C 類成員函數作為回調傳遞給 API?

如何將 C 類成員函數作為回調傳遞給 API?

Barbara Streisand
發布: 2024-12-24 10:15:37
原創
154 人瀏覽過

How Can I Pass a C   Class Member Function as a Callback to an API?

將類別成員函數作為回調傳遞

在嘗試將類別成員函數作為A​​PI 的回調傳遞時,您可能會遇到編譯錯誤由於缺少參數列表。要解決此問題,建議使用函數指標或捕獲類別實例的 lambda 表達式。

函數指標

錯誤訊息建議使用 '&CLoggersInfra:: RedundancyManagerCallBack' 建立指向該成員的指標。這是因為類別成員函數通常採用兩個參數:第一個參數是指向類別實例的指針,第二個參數是函數的參數。

void (CLoggersInfra::*ptr)(int); // Function pointer type
ptr = &CLoggersInfra::RedundancyManagerCallBack;
登入後複製

但是,函數指標方法需要您可以明確指定第一個參數,這可能不適用於所有場景。

Lambda 表達式(C 11 和稍後)

Lambda 表達式提供了一種更簡潔靈活的方式來捕獲類別實例並建立回調函數:

auto lambda = [this](int arg) { this->RedundancyManagerCallBack(arg); };
登入後複製

這個lambda 表達式擷取'this'指標並定義一個採用整數參數“arg”的匿名函數。然後,您可以將lambda 作為回調傳遞:

m_cRedundencyManager->Init(lambda);
登入後複製

結論

透過使用函數指標或lambda 表達式,您可以有效地將類別成員函數作為回調傳遞,同時遵守API 要求並避免編譯錯誤。 Lambda 表達式在 C 11 及更高版本中特別方便,因為它們簡化了類別實例的擷取。

以上是如何將 C 類成員函數作為回調傳遞給 API?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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