我有一个 std::vector<Enemy> enemies
.在 Enemy
的构造函数的末尾我做的课enemies.push_back(*this)
,虽然我不太确定这是最好的方法,也不确定为什么我需要指针,但没有它我会出错。
在析构函数期间,我想做类似的事情:
enemies.erase(std::find(enemies.begin(), enemies.end(), *this));
但这并不太好。
基本上,当一个 Enemy
已实例化我希望它进入 enemies
vector ,并在销毁时删除。
最佳答案
您可能需要进一步细化问题:std::vector 敌人的范围是什么?
回答问题的第一部分:敌人已被声明为 vector 而不是指向敌人的指针。这就是为什么您必须通过将“*this”作为 push_back() 调用的参数来生成引用。您实际上保留了在此 vector 中构造的所有对象的拷贝。
这是您的意图还是您的意思是它是某种注册表,即跟踪所有创建的 Enemy 对象?如果它是您想要的注册表:
请使用std::vector<Enemy*> enemies
.
请尝试具体说明“效果不太好”。
我认为,如果您提供更多背景信息,人们可以给出更好的答案。
关于c++ - 管理 vector 中的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27113878/