C++中静态成员函数访问成员变量问题_转瞬之间的博客-程序员信息网_c++成员函数如何访问成员变量

技术标签: C++  静态成员函数  

C++会区分两种类型的成员函数:静态成员函数和非静态成员函数。这两者之间的一个重大区别是,静态成员函数不接受隐含的this自变量。所以,它就无法访问自己类的非静态成员。

 

网络上有很多关于解决静态成员函数访问普通成员变量的方法,总结如下:

 

方法一:声明类的所有数据成员都是静态的。运用这种方式的话,静态的成员函数就能够直接地访问它们,例如:

方法二:传入对象参照信息:

 

 

 

一般来说静态成员函数的参数没有严格的要求时,采用这种方法不失为妙招.如果静态成员函数的传入参数有严格的限制,就是说不能传入实体引用时,就不能使用这种方法了.

方法三:申明空指针

这种方法在类只有一个实体时可行,因为传入的this指针是一个全局量,始终指向最后定义的那个实体,当定义了第n+1个实体候,第n个实体的this指针就被忘掉了.在这种方法的启发下,我采用了下面的方法,比较麻烦些,但确实可行.之所以可行,前提是静态成员函数是一个回调函数,它返回了一个实体标识,但有别于this指针.

 

方法四:定义全部量(可以是数组,也可是链表)保存每个this指针

定义结构体:

 

 

转自:http://shellman.i.sohu.com/blog/view/98359969.htm

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhang431705/article/details/9861859

智能推荐

OLAP数仓进阶:主流开源OLAP系统的分类及核心技术点_浪尖聊大数据-浪尖的博客-程序员信息网

作者介绍温正湖,网易杭研高级数据库技术专家,数字产业事业部大数据产品中心OLTP和OLAP内核团队负责人。负责网易大数据OLAP系统和OLTP关系型数据库内核相关的开发和运维工作。毕业1...

与时俱进------快乐女声如何扩大影响力?_feitianhanxue的博客-程序员信息网

与时俱进------快乐女声如何扩大影响力?文/王易见   眼下,湖南卫视的《快乐女声》正搞得如火如荼,不过,细心一点的观众也许会发现,今年的快乐女声比前几年的超级女声无论是声势还是规模都要大很多,尤其是互联网平台的充分介入,加速了快乐女声“与时俱进”的步伐。    作为选秀节目的领头羊,湖南卫视本次采取了多项措施为快女造势,扩大其影响力,一方面改名换姓------将“超级女声”

你是否曾质疑过DB-Engine的数据库排名?_db engin_NoSQL漫谈的博客-程序员信息网

在谈论数据库的最新趋势时,我们习惯了参考DB-Engine上所提供的排名信息。每当新的报告出来时,我们也时常看到各个媒体网站争先发布关于最新排名的分析内容。如标题所言,你是否曾质疑过DB-Engine所给出的这份排名?如下是2018年3月份的一份最新排名报告:在这份报告中,整体上来看似乎没有什么大问题。但关于HBase与Cassandra的名次,从我所接触的国内市场的信息来看,明显是反直觉的,于是...

大数据有哪些特征?_大数据的其他特征包括_Shockang的博客-程序员信息网

写在前面本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构和文献引用请见100个问题搞定大数据理论体系解答大数据特征通常指的4V。1.数据量大(Volume) 非结构化数据的超大规模和增长,导致数据集合的规模不断扩大,数据单位已从GB到TB再到PB级,甚至开始以EB和ZB来计数。2.类型繁多(Variety) 大数据的类型不仅包括网络日志、音频、视频、图片、地理位置信息等结构化数据,还包括半结构化数据甚至

光流法应用——自适应检测视频火车速度_光流法用于速度检测_老潘家的潘老师的博客-程序员信息网

2021-02-259 min read# 火车# 艺术设计# opencv# 计算机视觉# 自动化# python# 数字图像处理本文参考资料:[1]OpenCV-Python Tutorials » Video Analysis » Optical Flow[2]Good Features to Track[3]Pyramidal Implementation of the Lucas Kanade Feature Tracker Description o...

SpringBoot 2.0.5版本使用JPA时@Transactional失效问题_夜色撩人_的博客-程序员信息网

失效原因: SpringBoot 2.0.5版本使用JPA自动创建表时,默认表引擎为MyISAM,该引擎不支持事务导致@Transactional失效. 1. 查看已有数据表引擎show create table 表名  2. 修改表引擎为InnoDBalter table 表名 engine=InnoDB  3. 在配置文件中修改      将spring.jpa.d...

随便推点

基于Springboot微信点餐系统的开发与实现_请叫我小艺啊啊啊的博客-程序员信息网

微信点餐数据库注意事项商品表:1:在企业级中,由于数据量是比较大的,所以id一般采用的是varchar,不采用int2:凡是涉及到价格的统一采用decimal,例如本项目中单价如下: product_price decimal(8,2) not null comment ‘单价’, 表示具有8位整数,以及两位小数,总共10位。3:因为库存需要计算(加减),所以此处设置为int类型,商品...

vue单文件组件之自定义组件的使用_gochanTao的博客-程序员信息网

vue单文件组件之自定义组件的使用1、首先需要将封装的组件放到公共组件文件夹我这里是放在 common 里,里面一共封装了三个子组件,本文只拿其中的 pageList.vue 来举例。该组件是用来展示文章列表。其中pagesList.vue的部分内容如下:<template> <div> &a

【强化学习笔记】5.1 无模型的强化学习方法-时间差分算法_广告与算法的博客-程序员信息网

【深入浅出强化学习原理入门学习笔记】5.无模型的强化学习方法-时间差分算法在无模型的强化学习方法-蒙特卡罗算法中介绍了蒙特卡罗算法是利用经验平均估计状态值函数,存在一个问题是经验平均要到一次实验结束后才出现,学习速度慢,学习效率不高。重新看一下在蒙特卡罗算法中状态值函数的更新方式 vk(s)=vk−1(s)+1k(Gk(s)−vk−1)vk(s)=vk−1(s)+1k(Gk(s)−vk−1)...

实训8——蓝牙修改开锁密码_v_BinWei_v的博客-程序员信息网

实训九 : 蓝牙修改开锁密码一、实验目的通过ESP32,按键模块和SG90舵机,实现蓝牙发送相应的命令修改按键密码二、实验内容1.连接ESP32和按键模块的引脚,以及ESP32和SG90舵机的引脚2.从键盘输入密码,ESP32获取到所输入的密码并判断是否正确3.密码验证正确后,ESP32控制舵机的转动三、实验设备1.ESP32-WROOM-32D 开发板2. 3*4按键模块3.SG90舵机4.杜邦线四、实验步骤1) 连接引脚3*4矩阵键盘引脚依次为: 7 6 5

浏览器伪装成linux,手把手教你修改Firefox的User-Agent伪装Android微信浏览器_硅农的博客-程序员信息网

增加配置结点:general.useragent.override值(Android微信浏览器):Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMes...

php pop3,php使用smtp,pop3协议收发邮件代码_weixin_39872191的博客-程序员信息网

2015-07-17 06:30:04阅读( 139 )《php使用smtp,pop3协议收发邮件代码》if ($EMAIL_INC) return;$EMAIL_INC= "defined";define( "SmtpPort",25);class Pop3 {var $subject; // 邮件主题var $from_email; ...

推荐文章

热门文章

相关标签