免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1840 | 回复: 6
打印 上一主题 下一主题

[C++] 转换访问方式 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-17 17:13 |只看该作者 |倒序浏览
本帖最后由 hongyunqi 于 2010-07-17 17:16 编辑

我的问题是这样的
系统在开始设计的时候为了方便,直接定义了一个全局数组
TYPE_STR MY_STR[MAX]
TYPE_STR是一个结构体,MAX是一个比较大的整数(如:1000)

但是后来发现这样设计太耗内存了,于是想改成全局指针数组
TYPE_STR *MY_STR[MAX]
当需要一个TYPE_STR,在new一个TYPE_STR

但是这样改有一个问题,因为系统中存在很多这样的调用MY_STR[0].ATT1, MY_STR[0].ATT2 ....
如果改成指针数组了,就必须用MY_STR[0]->ATT1, MY_STR[0]->ATT2来访问数据

怎样才能,在改成指针数组之后也能用MY_STR[0].ATT1访问数据呢?

论坛徽章:
0
2 [报告]
发表于 2010-07-17 17:33 |只看该作者
本帖最后由 wmmy2008 于 2010-07-17 17:35 编辑

没法,查找替换。。或者在预编译的时候用宏替换。

论坛徽章:
0
3 [报告]
发表于 2010-07-17 17:38 |只看该作者
设计一个封装数组的单例类,重载operator[]返回元素引用,进入进程时调用一个初始化函数,GetInstance的结果赋值给全局指针……
总体而言,还是查找替换方便点= =...

论坛徽章:
0
4 [报告]
发表于 2010-07-17 17:47 |只看该作者
replace

论坛徽章:
0
5 [报告]
发表于 2010-07-17 18:19 |只看该作者
本帖最后由 没本 于 2010-07-17 18:20 编辑

TYPE_STR *MY_STR[MAX]改为
MyContainer<TYPE_STR *> My_strs;
重载operator[]
就可以用My_strs[0].member

论坛徽章:
0
6 [报告]
发表于 2010-07-17 18:45 |只看该作者
重载[]的确是个好方法,但是有点担心:
修改之前,MY_STR是一个TYPE_STR类型的数组
修改之后,MY_STR的类型就完全变了,不知道有没有可能造成其他的负面影响

论坛徽章:
0
7 [报告]
发表于 2010-08-05 16:26 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP