手机
当前位置:查字典教程网 >编程开发 >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++中this指针的用法及介绍

函数指针的一些概念详解

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

C语言数组指针的小例子

c++中冒号(:)和双冒号(::)的使用说明

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

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

函数指针与指针函数的学习总结

精品推荐
分类导航