求助急!!!!!!!!!(关于MFC飞机大战)
mfc吧
全部回复
仅看楼主
level 2
xiaoblack22 楼主
//战机导弹炸掉BOSS
POSITION gPos1=NULL,gPos2=NULL;
if(m_pMe->level==9)
{CRect BRect = e->GetRect();//[怒]就是这里产生断点,e是我定义的CBoss*e;CBoss是我自己定义的BOSS类;另外我在用这些指针时候特别容易产生断点运行着运行着就崩!编译没错误玩着玩着到执行到这里就崩!![怒]
for(gPos1=m_ObjList[enBomb].GetHeadPosition();( gPos2 = gPos1 ) != NULL;)
{
CBomb* pBomb = (CBomb*)m_ObjList[enBomb].GetNext(gPos1);
CRect bRect = pBomb->GetRect();
CRect tmpRect;
//添加爆炸效果
if(tmpRect.IntersectRect(&bRect,BRect))
{
m_ObjList[enExplosion].AddTail(
new CExplosion(BRect.left,BRect.top)
);
//m_pMe->life--;
//删除子弹
m_ObjList[enBomb].RemoveAt(gPos2);
delete pBomb;
e->HP -= 10;
if(e->HP <= 0)
{
e->life--;
e->HP = 100;
}
if(e->life <= 0)
{
//删除战机
delete e;
e=NULL;
break;
}
}
}
}
2015年07月19日 05点07分 1
level 9
没有叫容易产生断点的说法,这里的崩溃必然就是因为你访问了空指针。这种情况,第一你尝试操作这个指针之前得先判断它的有效性,第二你得搞清楚为何这里你会取到一个空指针,这个只有你自己才清楚了。
2015年07月19日 11点07分 2
大神,可是我在view.cpp的前面有写e=new CBoss啊这不就是把e指向了我建立的那个BOSS对象了吗,而且我是仿照MYPLANE写的为啥会空呢
2015年07月19日 12点07分
@xiaoblack22 你这点代码看不到e怎么来的,也不知道你这类具体是怎么定义的。这东西没法瞎猜,只有自己逐步断点慢慢调看到底哪一步出问题的。
2015年07月19日 14点07分
@89198408 [乖]嗯好的我再看看
2015年07月19日 22点07分
1