ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 网络编程 >> C/C++教程 >> 记一次C++静态反射的实践

记一次C++静态反射的实践(1/16)

来源:网络整理     时间:2018-07-27     关键词:

本篇文章主要介绍了" 记一次C++静态反射的实践",主要涉及到方面的内容,对于C/C++教程感兴趣的同学可以参考一下: 1. OBJECTIVE实现目标,能够获取一个用户自定义类型的成员变量和成员方法,包含静态和非静态的。实现方式有两种,侵入式和非侵入式。侵入式的方案,可以比较好...

1. OBJECTIVE

实现目标,能够获取一个用户自定义类型的成员变量和成员方法,包含静态和非静态的。实现方式有两种,侵入式和非侵入式。侵入式的方案,可以比较好的处理保护类型和私有类型的成员,但是面对无法修改源码的类库却束手无策。非侵入式的实现不需要修改用户自定义类型,可以很好的处理外部的类库,但是又无法处理对非公有成员。两种方案各有优劣,笔者个人是倾向于非侵入式的方案。毕竟,即使反射出了非公有的成员,我们也无法访问封装好的非公有成员。

量化具体的目标,详细如下:
1. 访问类名;
2. 访问公有的非静态成员变量;
3. 访问公有的非静态成员函数;
4. 访问公有的静态成员变量;
5. 访问公有的静态成员函数;
6. 访问基类;

用代码接口来更详细的表达具体目标:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

classfoo

{

public:

    // constructor

    foo():var_a_(0){};

    foo(inta):var_a_(a){}

    // non-static method

    intget()const{returnvar_a_;}

    voidset(inta){var_a_=a;}

public:

    // static data member

相关图片

相关文章