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
- C++类的成员函数地址(实习笔记)
- 【C/C++】类成员函数地址的获取及使用方法
- 类成员函数的地址
- 类成员函数的地址
- 获取成员方法的地址,将C++类成员方法转换成C自由函数
- 成员函数的地址
- 类函数成员地址的注意问题 [**]
- 如何打印类成员函数的地址
- 类成员变量和成员函数的地址
- 如何把C++成员函数的地址传给C
- C++:类的成员函数
- C++ : 成员函数的地址
- 获得类中成员地址,函数地址
- 一步一步学习C++(类)之成员函数的特性
- 【day0404 C++】类的成员函数
- 【c++】类的静态成员函数
- C++:面向行的类成员函数
- 3.2类的成员函数【C++】
- 内存初始化
- MySQL性能优化的21个最佳实践
- 常见的RuntimeException异常
- 使用SequoiaDB驱动多线程开发常见错误分析
- DigitalOcean注册优惠
- C++类的成员函数地址(实习笔记)
- Squid 访问控制-ACL
- error: linker command failed with exit code 1 (use -v to see invocation)
- 总结python中的乱码问题
- 《深入理解Android 卷III》第五章 深入理解Android输入系统
- Go语言阅读小笔记,来自知呼达达关于unsafe.Pointer的分享.
- D - Cut the Cake----(2015 summer training #11)
- 内存管理看全局变量、静态全局变量、局部变量、静态局部变量
- NOIP2012提高组 借教室