C++ 对象间通信框架 V2.0 ××××××× 之(四)
类定义:CMemberFuncPointer
=======================================================================
// MemberFuncPointer.h: interface for the CMemberFuncPointer class.
//
////////////////////////////////////////////////////////////////////// #if !defined(AFX_MEMBERFUNCPOINTER_H__4D78718D_778E_4427_BBC1_C5F2D52C64E5__INCLUDED_)
#define AFX_MEMBERFUNCPOINTER_H__4D78718D_778E_4427_BBC1_C5F2D52C64E5__INCLUDED_ #if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000 // 成员函数指针最大长度
#define MEMBER_FUNC_POINTER_MAX_SIZE 32
class CMemberFuncPointer
{
public:
void Reset();
void Set(const void*pFunc,int p_size);
void Get(void*pFunc);
CMemberFuncPointer();
CMemberFuncPointer(const char pointerdata[],int p_size);
CMemberFuncPointer(void* pointerdata,int p_size);
virtual ~CMemberFuncPointer(); bool operator==(const CMemberFuncPointer &mfp) const;
bool operator!=(const CMemberFuncPointer &mfp) const; CMemberFuncPointer& operator=(const CMemberFuncPointer &mfp); private:
int m_size;
char m_pointer_data[MEMBER_FUNC_POINTER_MAX_SIZE];
}; #endif // !defined(AFX_MEMBERFUNCPOINTER_H__4D78718D_778E_4427_BBC1_C5F2D52C64E5__INCLUDED_)
MemberFuncPointer.h
// MemberFuncPointer.cpp: implementation of the CMemberFuncPointer class.
//
////////////////////////////////////////////////////////////////////// #include "stdafx.h"
#include "OverlapRoutine.h"
#include "MemberFuncPointer.h" #ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif //////////////////////////////////////////////////////////////////////
// Construction/Destruction
////////////////////////////////////////////////////////////////////// CMemberFuncPointer::CMemberFuncPointer()
{
this->m_size = ;
} CMemberFuncPointer::CMemberFuncPointer(const char pointerdata[],int p_size)
{
if(p_size<=MEMBER_FUNC_POINTER_MAX_SIZE)
{
this->m_size = p_size;
memcpy(this->m_pointer_data,pointerdata,p_size);
}
else
{
this->m_size = ;
}
} CMemberFuncPointer::CMemberFuncPointer(void* pointerdata,int p_size)
{
if(p_size<=MEMBER_FUNC_POINTER_MAX_SIZE)
{
this->m_size = p_size;
memcpy(this->m_pointer_data,pointerdata,p_size);
}
else
{
this->m_size = ;
}
} CMemberFuncPointer::~CMemberFuncPointer()
{ } bool CMemberFuncPointer::operator==(const CMemberFuncPointer &mfp) const
{
if(this->m_size==mfp.m_size) //mfp.m_size 可以访问私有成员
{
if(==memcmp(this->m_pointer_data,mfp.m_pointer_data,this->m_size))
{
return true;
}
} return false;
} bool CMemberFuncPointer::operator!=(const CMemberFuncPointer &mfp) const
{
if(this->m_size==mfp.m_size) //mfp.m_size 可以访问私有成员
{
if(==memcmp(this->m_pointer_data,mfp.m_pointer_data,this->m_size))
{
return false;
}
} return true;
} void CMemberFuncPointer::Get(void *pFunc)
{
memcpy(pFunc,this->m_pointer_data,this->m_size);
} void CMemberFuncPointer::Set(const void *pFunc,int p_size)
{
memcpy(this->m_pointer_data,pFunc,p_size);
this->m_size = p_size;
} void CMemberFuncPointer::Reset()
{
this->m_size = ;
} CMemberFuncPointer& CMemberFuncPointer::operator =(const CMemberFuncPointer &mfp)
{
if(this != &mfp)
{
memcpy(this->m_pointer_data,mfp.m_pointer_data,mfp.m_size); //mfp.m_pointer_data 可以访问私有成员
this->m_size = mfp.m_size; //mfp.m_size 可以访问私有成员
} return *this;
}
CMemberFuncPointer.cpp
C++ 对象间通信框架 V2.0 ××××××× 之(四)的更多相关文章
- C++ 对象间通信框架 V2.0 ××××××× 之一
V2.0 主要是信号槽连接的索引性能做了改进,新设计了程序构架实现了多级分层索引,索引时间性能基本不受连接表的大小影响. 类定义:CSignalSlot C_MemberFuncPointer C_s ...
- C++ 对象间通信框架 V2.0 ××××××× 之(三)
类定义:CSignalSlot ======================================================================= // SignalSlo ...
- C++ 对象间通信框架 V2.0 ××××××× 之(五)
类定义: ======================================================================= // MemberFuncPointer.h: ...
- C++ 对象间通信框架 V2.0 ××××××× 之(二)
公共头文件:ss_type_def.h ================================================================================ ...
- 文件断点续传原理与实现—— ESFramework 通信框架4.0 进阶(12)
在ESFramework通信框架 4.0 快速上手(13) -- 文件传送,如此简单一文的详细介绍和ESFramework通信框架 4.0 快速上手(14) -- 聊天系统Demo,增加文件传送功能( ...
- C++对象间通信组件,让C++对象“无障碍交流”
介绍 这是很久之前的一个项目了,最近刚好有些时间,就来总结一下吧! 推荐初步熟悉项目后阅读本文: https://gitee.com/smalldyy/easy-msg-cpp 从何而来 这要从我从事 ...
- 可靠通信的保障 —— 使用ACK机制发送自定义信息——ESFramework 通信框架4.0 快速上手(12)
使用ESPlus.Application.CustomizeInfo.Passive.ICustomizeInfoOutter接口的Send方法,我们已经可以给服务端或其它在线客户端发送自定义信息了, ...
- 接口自动化 基于python+Testlink+Jenkins实现的接口自动化测试框架[V2.0改进版]
基于python+Testlink+Jenkins实现的接口自动化测试框架[V2.0改进版] by:授客 QQ:1033553122 由于篇幅问题,,暂且采用网盘分享的形式: 下载地址: [授客] ...
- ESPlatform 支持的三种群集模型 —— ESFramework通信框架 4.0 进阶(09)
对于最多几千人同时在线的通信应用,通常使用单台服务器就可以支撑.但是,当同时在线的用户数达到几万.几十万.甚至百万的时候,我们就需要很多的服务器来分担负载.但是,依据什么规则和结构来组织这些服务器,并 ...
随机推荐
- java 多线程并发问题总结
java 多线程并发主要通过关键字synchronized实现 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问 ...
- C语言第十一周作业
这个作业属于哪个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass3-2018/ ...
- Nginx服务器优势是什么
nginx介绍.功能,优势 https://www.cnblogs.com/wcwnina/p/8728391.html#!comments Nginx负载均衡,session共享问题,几种解决方案 ...
- [转帖]青岛uber偷拍设备
爱彼迎民宿路由器暗藏摄像头:官方回应已移除房源 https://www.cnbeta.com/articles/tech/844233.htm 罚款 就是搞笑啊.. 不过现在偷拍设备真多... 5月5 ...
- Quartz-第四篇 常规quartz的使用
1.目录结构 2.主要文件 1>引入的jar包,quartz-2.2.2解压后lib下所有的jar包 2>quartz.properties org.quartz.threadPool.t ...
- 这款多线程中间件,吊打 Redis!
Java技术栈 www.javastack.cn 优秀的Java技术公众号 今天给大家介绍的是KeyDB,KeyDB项目是从redis fork出来的分支.众所周知redis是一个单线程的kv内存存储 ...
- c++ 多线程(2000个)端口扫描(附源码)
目录 程序适应环境与基本介绍 程序适应环境与基本介绍 情况:开2000个线程,扫描主机上开启的端口,扫描时间40秒左右. 瓶颈:不管开5000还是更多,都不能大幅加快扫描时间. 瓶颈解决方法:可以使用 ...
- Tarjan水题系列(2):HNOI2012 矿场搭建
题目: 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之后 ...
- es6 async和await
es7 async和await ,作为genertor函数语法糖,在使用上比generator函数方便的,Generator 函数就是一个封装的异步任务,或者说是异步任务的容器.异步操作需要暂停的地方 ...
- HTML A标签 href click事件冲突
转自:https://blog.csdn.net/xinglu/article/details/45199337