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

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


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


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


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


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




高人们,别矜持了,燃烧你们的小宇宙,尽情的发泄吧.
...全文
250 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
young_elife 2013-09-02
  • 打赏
  • 举报
回复
引用 8 楼 xiaohuh421 的回复:
[quote=引用 5 楼 young_elife 的回复:] [quote=引用 4 楼 xiaohuh421 的回复:] 共享数据的方法还是很多的哟: 全局变量, 共享节, 管道, 文件, 共享内存, 文件映射等等
这些方法都知道,我个人认为,没什么方法适合我这个问题的背景,设计一个像MFC那样的类库, 朋友你认为这些方法那一个更合适呢? MFC用的是全局变量。[/quote] 一般公用的部分都使用全局的单例对象, 管理全局需要的变量. MFC, WTL都是这么处理的. 这应该已经是经过很多人深思熟虑的方案了.[/quote] 这应该已经是经过很多人深思熟虑的方案了. 这句话很有道理
todd_leftcode 2013-09-02
  • 打赏
  • 举报
回复
全局变量越少越好, 最好只有一个。 谨慎通过静态、全局标识符引用数据,会导致测试灾难。
onlyhuiyi 2013-09-02
  • 打赏
  • 举报
回复
给分太少了,高人们都没有发泄的欲望。。
赵4老师 2013-08-29
  • 打赏
  • 举报
回复
共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·……
xiaohuh421 2013-08-29
  • 打赏
  • 举报
回复
引用 5 楼 young_elife 的回复:
[quote=引用 4 楼 xiaohuh421 的回复:] 共享数据的方法还是很多的哟: 全局变量, 共享节, 管道, 文件, 共享内存, 文件映射等等
这些方法都知道,我个人认为,没什么方法适合我这个问题的背景,设计一个像MFC那样的类库, 朋友你认为这些方法那一个更合适呢? MFC用的是全局变量。[/quote] 一般公用的部分都使用全局的单例对象, 管理全局需要的变量. MFC, WTL都是这么处理的. 这应该已经是经过很多人深思熟虑的方案了.
  • 打赏
  • 举报
回复
就访问效率而言,全局变量最优的选择了吧
young_elife 2013-08-29
  • 打赏
  • 举报
回复
每日签到
xiaohuh421 2013-08-28
  • 打赏
  • 举报
回复
共享数据的方法还是很多的哟: 全局变量, 共享节, 管道, 文件, 共享内存, 文件映射等等
young_elife 2013-08-28
  • 打赏
  • 举报
回复
分数太低了?
young_elife 2013-08-28
  • 打赏
  • 举报
回复
引用 4 楼 xiaohuh421 的回复:
共享数据的方法还是很多的哟: 全局变量, 共享节, 管道, 文件, 共享内存, 文件映射等等
这些方法都知道,我个人认为,没什么方法适合我这个问题的背景,设计一个像MFC那样的类库, 朋友你认为这些方法那一个更合适呢? MFC用的是全局变量。
rocktyt 2013-08-27
  • 打赏
  • 举报
回复
随便扯扯
继承一个只有静态数据的公共类?
young_elife 2013-08-27
  • 打赏
  • 举报
回复
引用 1 楼 rocktyt2 的回复:
随便扯扯 继承一个只有静态数据的公共类?
噢,是这样,背景是一个类库,顶层有一个抽象的父类CObject,子类都是平行关系,所以继承嘛, 这里用不到哟

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧