boost库之bind(与function配合使用)

// FirstTest.cpp : 定义控制台应用程序的入口点。
//bind(&mem,&obj, _1):类成员方法地址,对象地址,_1是占位符
//同一个类的不同对象可以delegate给不同的实现,从而实现不同的行为(myan语)

#include "stdafx.h"
#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <string>
#include <iostream>
using namespace std;
using namespace boost;

class FunTest
{
private:
		string m_name;
public:
	FunTest(string name)
	{
		m_name = name;
	}
	void print_mem(string elem)
	{
		cout << elem << this->m_name << endl;
	}
};

int main()
{
	boost::function<void(string)> funclass;
	FunTest test("leeboy");
	funclass = bind(&FunTest::print_mem, &test, _1);
	funclass("hello ");

	system("pause");
	return 0;
}

时间: 2024-11-05 15:17:40

boost库之bind(与function配合使用)的相关文章

Boost库之bind的使用

 Boost库的bind是对STL的bind1st和bind2nd的进一步泛化,那么我们不免要问,bind相对于bind1st和bind2nd,都有哪些优点呢?下面通过一个具体的例子来说明这个问题. 假如有一个整数的容器vector,现在想找出容器中不大于10的元素的个数,那么我们可以有多种方式来实现: 1.    自由函数方式 BOOL LessEqualToTen(int nTemp) { return nTemp <= 10; } int nCount = count_if(vctTe

Boost库之function的使用

 Boost库的function是一组函数对象包装类的模板,实现了一个泛型的回调机制.Boost库的function与函数指针相比,优点在于它允许用户在目标的实现上拥有更大的弹性,即目标既可以是普通函数(自由函数),也可以是函数对象和类成员函数,而且可以给函数添加状态. 使用Boost库的function,可以很好地与现有的代码融合在一起.另外,function还可以与Boost库的bind和lambda配合使用,从而极大地扩展了function的适用范围.function库支持的函数参数个

Boost库之lambda的使用

 在C++引入Boost库的lambda之前,许多编程语言,比如Lisp.Python和C#中就已经有了lambda.Boost库创建lambda的最初动机,是为了解决使用标准库时存在大量小的函数对象的定义的问题.而实际上,我们完全可以在需要使用这些函数对象的时候进行声明和定义,即就地进行.lambda库通过创建一个匿名的lambda表达式来代替实名的函数对象,大大简化了标准库的语法. 下面我们来看一个hello world级的lambda表达式: (cout << _1 <<

C++11和Boost库

C++11标准中引入了很多Boost库中的东西,对于所有人来说,完全可以使用C++11来替代之前使用的boost库. 但是还有一些事项需要我们注意. 发现了一篇好文,出处: https://meetingcpp.com/index.php/br/items/c11-and-boost.html Some parts of the Standard Library in C++11 are predated in boost. When playing around with C++11, you

2015-03-12---外观模式,建造者模式(附代码),观察者模式(附代码),boost库应用

今天白天主要看了boost库的应用,主要是经常使用的一些库,array,bind,function,regex,thread,unordered,ref,smartpointers库,晚上看了看设计模式.主要就是外观模式.建造者模式和观察者模式.我们从boost简要说起. 事实上boost的库好多东西在c++11里面已经有了.比方bind,仅仅只是boost的库的bind比c++11用着感觉要方便.事实上有些东西我自己由于也没实用c++做过什么大的项目.所以不敢乱说,仅仅敢说点建议性的,关于bi

2015-03-12---外观模式,建造者模式,观察者模式,boost库应用

今天白天主要看了boost库的应用,主要是常用的一些库,array,bind,function,regex,thread,unordered,ref,smartpointers库,晚上看了看设计模式,主要就是外观模式,建造者模式和观察者模式.我们从boost简要说起. 其实boost的库好多东西在c++11里面已经有了,比如bind,只不过boost的库的bind比c++11用着感觉要方便,其实有些东西我自己因为也没有用c++做过什么大的项目,所以不敢乱说,只敢说点建议性的,关于bind就是绑定

所有的 Boost 库文档的索引

按字母顺序列出的库 按类别列出的库 算法 破碎的编译器的解决方法 并发编程 容器 正确性和测试 数据结构 特定于域的 函数对象和高阶编程 泛型编程 图像处理 输入/输出 跨语言支持 迭代器 语言功能仿真 数学和数字 内存 解析 模式和习语 预处理器元编程 编程接口 状态机 字符串和文本处理 系统 模板元编程 杂项 图书馆从提高退休 请参阅入门页面以了解如何下载. 构建和安装库. 按字母顺序列出的库 蓄能器-增量计算和统计累加器,Eric Niebler 从集合框架 算法-有用的通用算法,从马歇尔

C++ Boost库分类总结

c# 程序员写c++,各种不适应.尤其是被内存操作和几十种字符串类型的转换,简直疯了,大小写转换竟然要手动写代码实现. Boost看介绍不错,也不知道能不能跨平台.过几天要上linux写c++, 也不知道这东西能不能用. 转自: https://blog.csdn.net/svap1/article/details/80496489 按照实现的功能,Boost可为大致归入以下20个分类,在下面的分类中,有些库同时归入几种类别.字符串和文本处理库 a) Conversion库:对C++类型转换的增

在win7 + vs express for desktop中安装stlport和boost库

一.安装stlport stlport是将sgi的stl库平移到各个平台上.sgi的这个库的特点就是效率非常高.boost在这个库上面运行要比vs自带的stl库效率高.所以我们首选安装stlport. 下载stlport:http://sourceforge.net/projects/stlport/ 最新版本是5.2.1 放到C盘根目录下面,解压.进入"vs2012 x86 native tools command prompt".(注意:用cmd不行) 进入"C:\STL