boost库之function

// FirstTest.cpp : 定义控制台应用程序的入口点。
//function<type> 存放方法的地址,函数的包装器(function wrapper)
//*iterator1 内容为参数传入function

#include "stdafx.h"
#include <boost/function.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;
	}
};
void printElem(string &elem)
{
	cout << elem <<endl;
}
int main()
{
	//普通方法使用
	string name = "leeboy";
	boost::function<void(string &)> fun;
	fun = &printElem;
	fun(name);

	//此处写明FunTest*是因为所有的成员方法都会隐式传入this指针
	//传入类的指针来指明this的指向
	boost::function<void(FunTest*, string)> funclass;
	funclass = &FunTest::print_mem;
	FunTest test("leeboy");
	funclass(&test, "hello ");

	system("pause");
	return 0;
}

时间: 2024-11-02 12:03:09

boost库之function的相关文章

Boost库之function的使用

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

在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

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库之lambda的使用

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

所有的 Boost 库文档的索引

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

C++ Boost库分类总结

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

使用boost库完成读写JSON字符串

boost库的编译不做赘述,这里用的版本是1.69.0,其他版本应该差不多 boost官网:https://www.boost.org/ 0.前言 今天要整的JSON是这样的 { "description": "this is a JSON test", "version": "100", "list": { "listkey1": "listvalue1", &qu