1
我正在使用C++进行游戏,并且有一个玩家对象和一个子弹对象。我有两种类型的对象,早在我的代码,像这样定义一个std :: vector的集合:在C++向量中变为null的对象<Object*>
std::vector<Player*> players;
std::vector<Bullet*> bullets;
我的问题发生在我的游戏主循环,在那里我做我所有的更新逻辑的。使用for循环来检查每个玩家并更新他,我得到他产生的任何子弹并将它们添加到子弹向量中。
// update players
for (int i = 0; i < players.size(); ++i){
Player *player = players[i];
player->Update(delta);
// get bullets
for (int b = 0; b < player->Bullets.size(); ++b){
// THIS IS WHERE THINGS GET WEIRD FOR PLAYER 2
Bullet *bull = player->Bullets[i];
bullets.push_back(bull);
}
player->Bullets.clear();
}
虽然我的第一个球员正常工作 - 他能投篮,他希望尽可能多的 - 当你到了第二的球员,让他拍导致EXC_BAD_ACCESS后来当我通过子弹矢量迭代。当我正在使用调试器(使用Xcode)时,当我看到下面的注释部分(“//这是哪里得到了WEIRD FOR PLAYER 2”)时,我注意到子弹是NULL并且玩家是NULL以及。在调用该玩家的更新方法和将子弹拉出的位置之间,出现了可怕的错误。
我一直在调试这几个小时了,我想知道我在想什么。
谢谢!
哦哇。我不能相信我错过了这一点。时间多喝咖啡。感谢关于C++ 11的提示!我刚开始使用'11,还有很多很酷的新东西要学习! – lxndragreat
....从如何形成一个测试用例开始。 http://kera.name/articles/2013/10/nobody-writes-testcases-any-more/这是你本周剩下的时间_only_工作! –