#include <iostream> #include <functional> #include <vector> #include <algorithm> namespace test{ class addTwoNums{ private: typedef std::function<void (int, int)> addTwo; public: void addWhenInputTwoNums(addTwo& obj){ int a, b; std::cin>>a>>b; obj(a, b); return ; } }; class functorTest{ private: void addThree(int i, int j, int k){ std::cout<<i+j+k<<std::endl; return ; } public: bool operator()(const int i){ std::cout<<"i="<<i<<std::endl; if(i==2){ return true; } return false; } void realadd(){ std::function<void(int, int)> f = std::bind(&functorTest::addThree, this, 3, std::placeholders::_1, std::placeholders::_2); adf.addWhenInputTwoNums(f); //use bind std::vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); std::find_if(v.begin(), v.end(), functorTest());//function object return ; } private: addTwoNums adf; }; int main(){ functorTest ft; ft.realadd(); return 0; } }; int main(){ test::main(); return 0; }
輸出結果:ios