首页
社区
课程
招聘
[讨论]关于类与类共享数据(无亲朋好友关系)
发表于: 2013-8-27 11:14 6429

[讨论]关于类与类共享数据(无亲朋好友关系)

2013-8-27 11:14
6429
我了解了一下MFC和WTL关于这个问题的实现方法,他们都是利用一个全局类(如Module State等),在程序初始化的时候把需要共享的数据保存在里面,这样其他类或者全局函数,都可以通过访问它来读取需要的数据了,而且还方便了动态链接库的编写,因为,比如模块的Instance,大家都需要获取,至于如何获取,可以调用GetModuleHandle这个Teb函数,可是如果是在动态链接库里调用,我们都知道动态链接库是被动的,它并不是执行体,所以它是没有线程的,当你调用这个函数时,得到的其实是调用线程所对应的Instance,这样看来,全局变量貌似是唯一真正属于模块的。

可是我很好奇,全局变量真的是解决这个问题唯一的答案吗?

这问题本身并没有什么实际的意义,姑且当它是一个脑筋急转弯,智力测验之类,

供有智之士,博学之人,无聊的时候思考一下,讨论一下,也供我这种小菜,有机会

学习一下大牛们的思维方式,拓宽一下眼界,

高人们,别矜持了,燃烧你们的小宇宙,尽情的发泄吧、

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
消灭0回复
2013-8-27 18:36
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
什么情况?
2013-8-28 09:07
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我说的不一定对,错了勿怪。

你不要一上来就考虑编代码,先把问题想清楚。
首先,要存数据,用于公共访问。
接着,用面向对象思想设计一下,把这个数据设计成类,在运行时使之实例化,赋值,放开访问。至于是不是全局其实取决于访问的生命期长短和作用域。

这样一来,就知道怎么弄了。程序你也知道怎么写了。
2013-8-28 09:26
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
噢,这个问题的背景是,怎么设计一个像MFC那样的类库,如果朋友你了解MFC的话,知道ModuleState和ThreadState这2个类是做什么用的。你就能理解,我上面的意思了。

现在根本没考虑编代码,就是在把一些问题想清楚,和琢磨怎么设计这个架构,

什么面相对象,生命周期,作用域之类的,我还是懂的,

不然我也不会琢磨设计引擎或者类库了
2013-8-28 21:02
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
无人问津
2013-8-29 09:19
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我帮顶一下
2013-8-29 09:32
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
8
PEB里找个无用字段存储也可以~
2013-8-29 10:55
0
雪    币: 213
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
首先,类库也是针对某个需求而产生的,所以先把那个需求抽象了再说。
再者,这种玩意儿,因为抽象后派生、子化的适用性关系,无一不是接口先行的,
最后,因为这个事很大,我也只能说这些,你那个问题在这个整体问题框架下的话应该不算啥,难事。

祝你好运吧!
2013-8-29 10:59
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
哇,终于有大神开口了。

前辈,我之前有想过通过FS寄存器,在TEB或者PEB中找一个系统保留字段来做这项工作,

可是听很多人说,不同版本的系统,这2个结构体可能有所变化,所以我也就没真正测试过。。
2013-8-31 21:44
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
11
peb基本无变化。
2013-8-31 21:58
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
十分感谢V大的帮助,我终于明白。
2013-9-1 09:30
0
游客
登录 | 注册 方可回帖
返回
//