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)
对于最多几千人同时在线的通信应用,通常使用单台服务器就可以支撑.但是,当同时在线的用户数达到几万.几十万.甚至百万的时候,我们就需要很多的服务器来分担负载.但是,依据什么规则和结构来组织这些服务器,并 ...
随机推荐
- keras recall
# accuracy, fmeasure, precision,recall def mcor(y_true, y_pred): y_pred_pos = K.round(K.clip(y_pred, ...
- 【Linux开发】V4L2应用程序框架
V4L2应用程序框架 V4L2较V4L有较大的改动,并已成为2.6的标准接口,函盖video\dvb\FM...,多数驱动都在向V4l2迁移.更好地了解V4L2先从应用入手,然后再深入到内核中结合物理 ...
- SpringBoot配置属性之Server参数
server配置server.address指定server绑定的地址 server.compression.enabled是否开启压缩,默认为false. server.compression.ex ...
- 【Linux-驱动】驱动策略----自旋锁
自旋锁 自旋锁最多只能被一个内核任务持有.要是锁未被持有,请求它的内核任务便会立即得到它并继续执行.如果一个内核任务试图请求一个已经被别的内核任务持有的自旋锁,那么CPU就会一直尽心循环---旋转-- ...
- 秒懂Vuejs、Angular、React原理和前端发展历史
「前端程序发展的历史」 「 不学自知,不问自晓,古今行事,未之有也 」 我们都知道现在流行的框架:Vue.Js.AngularJs.ReactJs,已经逐渐应用到各个项目和实际应用中,它们都是MVVM ...
- 极*Java速成教程 - (4)
Java语言基础 多态 多态是面向对象的一大重要特性,如果说封装是隐藏一个类怎么做,继承是确定一系列的类做什么,那多态就是通过手段去分离做什么和怎么做. 向上转型与收窄 在开发者将一类事物封装成类以后 ...
- restful风格详解
一.概念 RESTful架构,就是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方便,所以正得到越来越多网站的采用. REST这个词,是Roy Thomas Fielding在他 ...
- ubuntu 配置 tftp 服务器
一. 安装 tftp 1.1. 安装 tftp 所需的软件. a. 安装 tftp-hpa,tftpd-hpa,前者是客户端,后者是服务程序, 在终端下输入 sudo apt-get install ...
- Python 入门之代码块、小数据池 与 深浅拷贝
Python 入门之代码块.小数据池 与 深浅拷贝 1.代码块 (1)一个py文件,一个函数,一个模块,终端中的每一行都是代码块 (代码块是防止我们频繁的开空间降低效率设计的,当我们定一个变量需要开辟 ...
- go & Windows Service
相关库 https://godoc.org/golang.org/x/sys/windows/svc https://github.com/kardianos/service https://gith ...