国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

c++傳遞函數指針和bind的示例

2020-01-26 15:30:55
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

#include <algorithm>
class TestClass
{
public:
 int Sub(int x, int y) {
  return y - x;
 }
 void InitAndTest() {
  PrintWithClassMemberFunction(&TestClass::Sub);
  PrintWithClassPointer(this);
 }

 // call: PrintWithClassMemberFunction(&TestClass::Sub);
 void PrintWithClassMemberFunction(int (TestClass::*f)(int, int)) {
  // add 'this' pointer
  auto rel = (this->*f)(12, 13);
  AtlTrace("[%d]/n", rel);

  // bind with member function pointer into map
  auto funBind = std::bind(f, this, std::placeholders::_1, std::placeholders::_2);
  m_mapFun["PrintWithClassMemberFunction"] = funBind;
 }

 void PrintWithClassPointer(TestClass *pointInstance) {
  auto rel = pointInstance->Sub(20, 30);
  AtlTrace("[%d]/n", rel);

  auto funBind = std::bind(&TestClass::Sub, pointInstance, std::placeholders::_1, std::placeholders::_2);
  m_mapFun["PrintWithClassPointer"] = funBind;
 }

 void CallBindFun(int a, int b) {
  std::for_each(
   m_mapFun.begin(), m_mapFun.end(), [&a, &b](decltype(*m_mapFun.begin()) it) {
    AtlTrace("[%s] %d/n", it.first.c_str(), it.second(a, b));
  });
 }

 std::map<std::string, std::function<int (int, int)>> m_mapFun;
};


int _tmain(int argc, _TCHAR* argv[])
{
 TestClass tc;
 tc.InitAndTest();
 tc.CallBindFun(64, 128);
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黎川县| 大城县| 探索| 兴安县| 邵阳市| 宁晋县| 乐昌市| 潮州市| 巴中市| 封开县| 成武县| 灵宝市| 兴国县| 云和县| 汽车| 德昌县| 明水县| 姚安县| 南陵县| 曲麻莱县| 龙山县| 嘉义县| 镶黄旗| 枣庄市| 昭通市| 陵水| 鹤岗市| 北安市| 泌阳县| 太仓市| 四川省| 乌兰察布市| 泸州市| 肥城市| 忻州市| 色达县| 永靖县| 阿坝县| 马尔康县| 清涧县| 镇康县|