C++中使用function和bind綁定類成員函數(shù)的方法詳解
定義一個普通的類
class Test1{
public:
void fun(int val){
cout<<"hello world "<<val<<endl;
}
};
開始第一個測試
int main(){
Test1 t;
function<void(int)> pf = std::bind(&Test1::fun,t,2);
pf(4); //
return 0;
}
輸出的值是2,說明pf傳進(jìn)去的4并沒有什么用,在bind的時候值已經(jīng)綁定死了,但是pf()這樣不給參數(shù)會報錯。

如果我們想自定義參數(shù),使用占位符,std::placeholders::_1,可以看下圖,輸出的值是4了
int main(){
Test1 t;
function<void(int)> pf = std::bind(&Test1::fun,t,std::placeholders::_1);
pf(4);
return 0;
}

使用C++11新特性lambda表達(dá)式,注意[]要有一個&,這個意思是指可修改當(dāng)前作用域的變量。不過這樣頁會是邦死狀態(tài)
int main(){
Test1 t;
function<void(int)> pf = [&](int val){t.fun(2);};
pf(4);
return 0;
}
所以宗上所述,如果想自定義值的話,還是使用std::placeholders::_1 … std::placeholders::_n吧!
到此這篇關(guān)于C++中使用function和bind綁定類成員函數(shù)的方法詳解的文章就介紹到這了,更多相關(guān)C++ function和bind綁定類成員函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實現(xiàn)LeetCode(309.買股票的最佳時間含冷凍期)
這篇文章主要介紹了C++實現(xiàn)LeetCode(309.買股票的最佳時間含冷凍期),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
如何基于 Blueprint 在游戲中創(chuàng)建實時音視頻功能
我們在本文先來講講如何在 Unreal 中用 Blueprint 快速實現(xiàn)。稍后會分享基于 C++的實現(xiàn)步驟。感興趣的朋友跟隨小編一起看看吧2020-05-05

