gpt4 book ai didi

c++ - 在 C++ 中删除一个类对象

转载 作者:行者123 更新时间:2023-11-30 02:26:30 24 4
gpt4 key购买 nike

我正在控制台中做一个简单的僵尸岛游戏,我试图让僵尸在人类登陆时死亡。

为了创建僵尸,我使用了这样的 Zombie 类:

Zombies *zombie = new Zombies[4];

为了检查人类和僵尸是否在同一个地方,我使用了一个简单的 for 循环:

int zombieCount = 4;
for (int i = 0; i < 4; i++)
{
if (player.getPosX() == zombie[i].getPosX() && player.getPosY() == zombie[i].getPosY())
{
zombieCount--;

}
}

除了减少僵尸数量外,我击中的僵尸应该会从游戏中消失。我该怎么做?

最佳答案

在 C++11 中,您可以使用 std::remove(first, last, value) 删除数组中的某些元素。该函数返回新的数组结尾,例如使用:

auto end = std::remove(std::begin(zombie), std::end(zombie), zombie[i]);

我建议使用 std::vector,这是一个更适合您需求的动态数组。

引用文献:std::removestd::vector .

建议的 std::vector 示例:

std::vector<Zombies> zombies;
// init with zombies.push_back(someZombie);

for (vector<Zombies>::iterator it = zombies.begin(); it != zombies.end(); /*no ++it*/) {
if (player.getPosX() == it->getPosX() && player.getPosY() == it->getPosY())
it = zombies.erase(it);
else
++it;
}

int zombieCount = zombies.size();

关于c++ - 在 C++ 中删除一个类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42788124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com