游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4020|回复: 10

数组对象

[复制链接]

14

主题

37

帖子

37

积分

注册会员

Rank: 2

积分
37
发表于 2010-6-24 11:39:00 | 显示全部楼层 |阅读模式
我写了一个对象比如A,
然后声明了一个数组对象,用A as[123];
然后我做了一个as中所有对象与另外一个对象B的碰撞检测,发现as有一个对象与B碰撞了,于是
我想在as中把这个对象删除,或者说让存储这个对象的位置为空,这样我就可以通过判断数组中
对象是否为空来决定是否重画这个对象。
但是我发现不能这样写:as[3] = NULL;
除非我将原来的A as[123]改为A* as[123]
那么就可以写成as[3] = NULL;
难道A as[123]这样写就没有办法解决了吗?我指的是语法层次方面! [em17]

248

主题

2674

帖子

2702

积分

金牌会员

Rank: 6Rank: 6

积分
2702
QQ
发表于 2010-6-24 13:36:00 | 显示全部楼层

Re:数组对象

不是所有对象都能"删除"的.

所谓的删除你是怎么定义的?
一、对象释放了相关的资源,除内存,将自己置为一个特殊的状态
二、对象释放了所有的资源,包括自身内存。

如果你要做到NULL 这种程度,那么只能是满足第二种情况的作法。
第二种情况的前提条件就是需要动态申请的内存(也就是能动态释放)
A* as[123];这种定义是免不了的。

1

主题

29

帖子

29

积分

注册会员

Rank: 2

积分
29
发表于 2010-6-24 15:34:00 | 显示全部楼层

Re: 数组对象

1 定义对象: A NULL
2 重载 =
3 重载 ==

这样做可以达到你的要求,但是最大的弊端是系统资源无法合理的释放和分配

21

主题

100

帖子

100

积分

注册会员

Rank: 2

积分
100
QQ
发表于 2010-6-24 15:57:00 | 显示全部楼层

Re:数组对象

其实你可以不删内存 设一个标记 as.active = false

3

主题

263

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
发表于 2010-6-25 00:50:00 | 显示全部楼层

Re:数组对象

你的对象数组方的是对象,对象没有定义op=(int)操作符.
楼上的方法不错.
或者用指针数组.
A* pas[123]
for() pas = new A;
...
pas[3] = NULL;

或者 A* pas[123];
A as[123];
for () pas = &as;
最后 pas[3] = NULL

呵呵,语言只是个工具.说多了没意义,楼主要先自己搞清楚语言和语法.然后在语言本身的规则和限制下开发,利用语言实现你的算法.

14

主题

37

帖子

37

积分

注册会员

Rank: 2

积分
37
 楼主| 发表于 2010-6-25 10:03:00 | 显示全部楼层

Re:数组对象

有这个疑问主要是指针确实容易出问题,对我这样对游戏不熟悉的人,有此忘记初始化(没有确保游戏的函数的调用顺序),弄了好久,所以一般来说,声明的时候我喜欢用A a;这样的形式。
还真是难以抉择啊有时候。

14

主题

37

帖子

37

积分

注册会员

Rank: 2

积分
37
 楼主| 发表于 2010-6-25 10:20:00 | 显示全部楼层

Re: Re:数组对象

Symphonia: Re:数组对象

其实你可以不删内存 设一个标记 as.active = false

我晕[em17],别人写的数据类型我能随便修改啊!本来不想用一个BOOL数组来记录TRUE,FALSE的,但是现在没法了,就这样写吧!

87

主题

790

帖子

806

积分

高级会员

Rank: 4

积分
806
QQ
发表于 2010-6-26 15:13:00 | 显示全部楼层

Re:数组对象

用链表吧

87

主题

790

帖子

806

积分

高级会员

Rank: 4

积分
806
QQ
发表于 2010-6-26 15:33:00 | 显示全部楼层

Re: Re: Re:数组对象

mqlx0629: Re: Re:数组对象


我晕[em17],别人写的数据类型我能随便修改啊!本来不想用一个BOOL数组来记录TRUE,FALSE的,但是现在没法了,就这样写吧!

可以继承啊

12

主题

78

帖子

92

积分

注册会员

Rank: 2

积分
92
发表于 2010-6-29 10:48:00 | 显示全部楼层

Re: 数组对象

别人已经讲的很详细了, 楼主自己找个方法解决. 如果连这些问题也搞不定,就不要写程序了.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-8 09:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表