C++类的成员函数地址(实习笔记)

来源:互联网 发布:手机播音软件 编辑:程序博客网 时间:2024/04/29 08:26

C++类的成员函数地址(实习笔记)

这次的任务是重构代码,以前的代码由于时间的关系结构很粗糙,全是if结构,冗余的地方太多,而且对于后期的维护也是一个很大的问题。所以需要一个好一点的设计。

我的方法是采用函数指针数组的方式来解决if冗余的问题。正确使用函数指针数组的前提条件是这些函数的结构是类似的,也就是有相同类型的输入输出。这也恰好符合这次的问题。所以只需要把所有要调用的函数指针存入这个函数指针数组,然后用一个循环迭代调用就可以了,以后有新功能需要添加的时候也就只需要把对应的函数的指针增加到数组中就可以解决问题。十分方便。

但是这里有个问题,C++里面的类成员函数的取地址方法和C直接取地址是有一些不同的。例如:

Class at_file_service{    /*..其他代码..*/    int para_xml_func1(char *);    int para_xml_func2(char *);    ...}

首先,定义一个类成员函数指针的方式也和C不同:
int (at_file_service::ptrfunc)(char );
这样才能定义一个类成员函数指针变量。
其次,如何取得para_xml_func1的地址呢:
ptrfunc = &at_file_service::para_xml_func1;
最后,又怎么调用这个函数呢:
这个时候如果类没有使用单例模式的话就可以直接使用指针调用:
at_file_service.*ptrfunc(str);
如果像上一篇毕竟那样使用了单例模式的话:
at_file_service::get_at_file_service()->*ptrfunc(str);

(从这里两个函数的调用方式其实隐约可以看出类的实现方法应该和结构体有关。)

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 失业就业登记证怎么办? 如果父母是教师怎么办 老人档案丢了怎么办 想离婚想要孩子怎么办 一二年级成绩差怎么办 高考复读又失败怎么办 孩子不想估成绩怎么办 手机信号被屏蔽了怎么办 西安市旅游年卡怎么办 广电宽带网速慢怎么办 电视智能卡坏了怎么办 家乐卡二次授信怎么办? 邢台银行倒闭了怎么办 不敢和导师交流怎么办 考上一个破大学怎么办 腻子粉检测报告怎么办 电子厂插件很慢怎么办 预付费电表跳闸怎么办 电费有疑问怎么办大连 农村电表箱坏了怎么办 农村电表没电怎么办 家里电费特别高怎么办 电表读卡失败怎么办 电表卡消磁了怎么办 智能表采集失败怎么办 电脑没有蓝牙功能怎么办 判决后无力偿还怎么办 dz47-63c63跳闸怎么办 租房合同丢了怎么办 北京土地承包合同丢失怎么办 租赁合同丢失了怎么办 房屋租赁合同丢失怎么办 学校没发学生证怎么办 学校银行卡丢了怎么办 报税名字忘了怎么办 地税零申报漏报怎么办 欠中联重科施工电梯钱怎么办 大型船舶起锚正横后怎么办 老师不会教孩子怎么办 个体工商营业证怎么办 广州市住房公积怎么办