如何解决对象赋空的问题?

brk1985 2009-07-07 04:08:44

while(!isstop){
Object obj[20];//Object是自定义的一个类

for(int i=0;i<lastObjects.GetCount();i++)
{
obj[i] = lastObjects.GetAt(i);//obj[i]赋值
......
}
//希望在obj[i]下次赋值之前 清空obj[i]对象
}


网上查了一下,无法直接给对象赋空,那怎么实现“对象赋空”的功能

注:Object obj[20]改成Object* obj;编辑通过,但运行时“Run-Time Check Failure #3 - The variable 'obj' is being used without being defined.”
...全文
44 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
brk1985 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 taodm 的回复:]
指针没申请内存。
兄弟,基础呀。
[/Quote]

哈哈,主要是之前是学Java的,C/C++基础太差,指针问题一直没不清不楚的

我之前把Object obj[20];改成Object *obj;,出现题目上所说的问题;
刚才与同学讨论的时候发现Object obj[20];改成Object *obj = new Object[20];另外加delete语句,也可以达到效果。
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 brk1985 的回复:]
引用 1 楼 akirya 的回复:
你用指针吧,存指针数组。




我题目上已经注明 “指针数组”出现
“Run-Time Check Failure #3 - The variable 'obj' is being used without being defined.”
是“obj[i] = lastObjects.GetAt(i);”这句出现问题。

我这段程序都点特殊,“Object是自定义的一个类”,如果是int,char,使用指针数组时没问题的。
[/Quote]
lz还是先找本基础的语法书学习一下
KenFire 2009-07-07
  • 打赏
  • 举报
回复

while(!isstop){
Object *pObjArr = (Object*)malloc( 20*sizeof(Object) ); //等同obj[20],malloc没触发构造函数.
Object *ptr = *pObjArr; //用于操作的指针.

for(int i=0;i<lastObjects.GetCount();i++)
{
ptr = new(ptr) Object( lastObjects.GetAt(i) ); //使用定位new,且以来Object的拷贝构造函数来赋值,考虑深拷贝.
++ptr;
......
}
//希望在obj[i]下次赋值之前 清空obj[i]对象
//清空不知道.
}
brk1985 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ysuliu 的回复:]
用vector
有 clear() 函数可以用。。
C/C++ codewhile(!isstop){

vector<Object>vo;for(inti=0;i<lastObjects.GetCount();i++)
{
vo.push_back( lastObjects.GetAt(i) );//obj[i]赋值......
}//希望在obj[i]下次赋值之前 清空obj[i]对象vo.clear();
}
[/Quote]

看来还是用向量方便,用数组的话初始化函数写下当然也可以,主要是变量多很麻烦。
Walf_ghoul 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 taodm 的回复:]
指针没申请内存。
兄弟,基础呀。
[/Quote]
.......
ysuliu 2009-07-07
  • 打赏
  • 举报
回复
用vector
有 clear() 函数可以用。。

while(!isstop){

vector<Object> vo;

for(int i=0;i<lastObjects.GetCount();i++)
{
vo.push_back( lastObjects.GetAt(i) );//obj[i]赋值
......
}
//希望在obj[i]下次赋值之前 清空obj[i]对象
vo.clear();
}
taodm 2009-07-07
  • 打赏
  • 举报
回复
指针没申请内存。
兄弟,基础呀。
大前置 2009-07-07
  • 打赏
  • 举报
回复
Object 类写一写初始化函数 或是 在构造函数里 初始化类对象

while(!isstop){
Object obj[20];//Object是自定义的一个类

for(int i=0;i<lastObjects.GetCount();i++)
{
obj[i].clear(); //加个初始化函数, 或构造函数里初始化对象
obj[i] = lastObjects.GetAt(i);//obj[i]赋值
......
}
}
brk1985 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 akirya 的回复:]
你用指针吧,存指针数组。


[/Quote]

我题目上已经注明 “指针数组”出现
“Run-Time Check Failure #3 - The variable 'obj' is being used without being defined.”
是“obj[i] = lastObjects.GetAt(i);”这句出现问题。

我这段程序都点特殊,“Object是自定义的一个类”,如果是int,char,使用指针数组时没问题的。
beyond071 2009-07-07
  • 打赏
  • 举报
回复
楼主是不是想让对象变回到原始状态啊...
如果是,那弄个临时对象覆盖obj就是了
taodm 2009-07-07
  • 打赏
  • 举报
回复
你怎么定义“对象赋空”的?把对象搞没了?
  • 打赏
  • 举报
回复
你用指针吧,存指针数组。

64,281

社区成员

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

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