手机
当前位置:查字典教程网 >编程开发 >C语言 >c++传递函数指针和bind的示例
c++传递函数指针和bind的示例
摘要:复制代码代码如下:#includeclassTestClass{public:intSub(intx,inty){returny-x;}vo...

复制代码 代码如下:

#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] %dn", 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);

}

【c++传递函数指针和bind的示例】相关文章:

C++中函数的默认参数详细解析

c++ 构造函数的初始化列表

如何通过函数指针调用函数(实现代码)

C/C++回调函数介绍

关于C++使用指针 堆和栈的区别分析

C++中的函数指针与函数对象的总结

C/C++指针和取地址的方法

C++中简单读写文本文件的实现方法

c语言:基于函数指针的两个示例分析

C++中this指针的用法及介绍

精品推荐
分类导航