手机
当前位置:查字典教程网 >编程开发 >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++函数的相互引用

精品推荐
分类导航