2016-12-14:通过static关键字,使用类成员函数作为回调函数
#include <iostream> using namespace std; class Callee
{
public:
void PrintInfo(int i)
{ cout << "printf info " << i << endl; } static void OnCallback(void *arg, int i)
{
Callee *callee = static_cast<Callee*>(arg);
callee->PrintInfo(i);
}
}; typedef void(*CallbackFunctor)(void*, int); class Caller
{
public:
void SetCallback(CallbackFunctor func, void *arg)
{
m_callBack = func;
m_callee = arg;
} void DoCallback(int i)
{
m_callBack(m_callee, i);
}
private:
CallbackFunctor m_callBack;
void *m_callee;
}; int main()
{
Caller caller;
Callee callee;
caller.SetCallback(Callee::OnCallback, &callee);
caller.DoCallback(); Caller caller2;
Callee callee2;
caller2.SetCallback(Callee::OnCallback, &callee2);
caller2.DoCallback();
return ;
}
2016-12-14:通过static关键字,使用类成员函数作为回调函数的更多相关文章
- C++中 线程函数为静态函数 及 类成员函数作为回调函数
线程函数为静态函数: 线程控制函数和是不是静态函数没关系,静态函数是在构造中分配的地址空间,只有在析构时才释放也就是全局的东西,不管线程是否运行,静态函数的地址是不变的,并不在线程堆栈中static只 ...
- 面向对象的static关键字(类中的static关键字)
转自:http://blog.csdn.net/xiayefanxing/article/details/7382192 http://www.cnblogs.com/SelaSelah/archiv ...
- static 关键字和类的加载顺序
静态变量在类加载时初始化,而非静态变量在创建对象时初始化.static关键字修饰的变量就是静态变量. 子类继承父类,子类在生成对象的时候,先初始化父类的成员变量,接着执行父类的构造器,完成父类的初 ...
- static类成员(变量和函数)
0. 使用背景 对于特定类类型的全体对象而言,访问一个全局对象有时是必要的.也许,在程序的任意点需要统计已创建的特定类类型对象的数量:或者,全局对象可能是指向类的错误处理例程的一个指针:或者,它是指向 ...
- 用static关键字修饰类
Java里面static一般用来修饰成员变量或函数.但有一种特殊用法是用static修饰内部类,普通类是不允许声明为静态的,只有内部类才可以.被static修饰的内部类可以直接作为一个普通类来使用,而 ...
- static关键字修饰类
今天继续研究公司的新项目,据说是京东的架构,研究看了一番,果然很牛逼,大致是Maven+spingmvc+spring+mybatis+ehcache+velocity来搭建的,数据库用的是mysql ...
- c#类—成员函数和封装及构造函数、析构函数、静态成员
C# 类(Class) 当您定义一个类时,您定义了一个数据类型的蓝图.这实际上并没有定义任何的数据,但它定义了类的名称意味着什么,也就是说,类的对象由什么组成及在这个对象上可执行什么操作.对象是类的实 ...
- 【C++】C++类的static 关键字理解
转载自:ZJE_ANDY static修饰类中成员,表示类的共享数据 1.static类成员 C++primer里面说过,static类成员不像普通的类数据成员,static类数据成员独立于一切类对象 ...
- C++类中的Static关键字
静态成员是可以独立访问的,也就是说,无须创建任何对象实例就可以访问,而静态成员函数可不建立对象就可以被使用. 或者说静态函数与一般函数没有太大的区别,只是访问有限制,静态变量跟一般的全局变量的区别 ...
随机推荐
- WIN7 WIN8 WIN10你们的WmiPrvSE.exe系统占用资源厉害吗?
大家一起来做个实验吧.把你的支付宝安全控件和支付宝数字证书两个东东都卸掉.试试看电脑是否年轻几岁? 出处:百度贴吧原帖
- Linux系统中Xampp+Bugfree安装
一.XAMPP下载安装: 1.https://www.apachefriends.org/download.html下载安装包, 因为我们是要安装到linux下面,所以下载xampp的linux版本, ...
- WEB开发中前后台树形菜单的展示设计
在WEB开发中经常需要进行树形菜单的展示,本例通过不同角度的总结了如下三种实现方式: 通过JS的递归实现前端菜单DOM的动态创建 通过JSP的include指令结合JSTL表达式语言递归实现菜单的展示 ...
- vs2008及以上的ActiveX测试容器在哪儿
解压缩 vssetupdir \Samples\1033\VC2010Samples.zip ,位于C++\MFC\ole\TstCon\ vs2008中的sample的话,要改TCProps项目的L ...
- api接口验证shal()
就安全来说,所有客户端和服务器端的通信内容应该都要通过加密通道(HTTPS)传输,明文的HTTP通道将会是man-in-the- middle及其各种变种攻击的温床.所谓man-in-the-midd ...
- windows下IIS+PHP解决大文件上传500错问题
linux下改到iis+php后,上传大于2M就出500错,改了php.ini中的upload_max_filesize也不行,最后解决如下: 第一步:修改php.ini 上传大小限制 (以上传500 ...
- mac java 安装路径
google了一下,发现了这篇文章Important Java Directories on Mac OS X,可以使用工具命令"/usr/libexec/java_home"来定 ...
- 【转】Java代码规范
[转]Java代码规范 http://blog.csdn.net/huaishu/article/details/26725539
- css3基础、(弹性、响应式)布局注意点
E1>E2选择父元素为E元素的所有E2元素(子类选择器) E1+E2选择元素为E1之后的所有E2元素(兄弟选择器) E[attr]只使用属性名,但没有确定任何属性值 E[attr="v ...
- Katana
- KAT101 - Katana has many nodes for operation, e.g. MaterialAssign, - The connections between nodes ...