【发布时间】:2015-01-24 04:36:40
【问题描述】:
我有一个std::vector<Enemy*> enemies,当我创建一个新的Enemy 时,我会使用enemies.push_back(this)。这适用于我正在做的事情,但我想知道是否有办法让向量不需要指向敌人的指针。我只尝试过std::vector<Enemy>,但它似乎导致了一堆我无法弄清楚的问题。
即。 - 不得不更改为enemies.push_back(*this),并且由于某种原因导致了一些链接器错误。
循环执行以下工作,但删除指针会产生问题:
void Enemy::updateEnemies(sf::RenderWindow &window) {
for(std::vector<Enemy*>::iterator it = enemies.begin(); it < enemies.end(); it++) {
(*it)->update(window);
}
}
想知道是否有人可以指出我使用没有指针的向量并循环遍历它,使用相同的函数更新其中的对象..
【问题讨论】:
-
你为什么要做
push_back(this),是什么让你相信解决方案是push_back(*this)?您的问题中缺少这一点...在 C++11 中请使用智能指针。 -
这不是您向矢量添加内容的方式吗?来自 javascript,
array.push()通常是我做事的方式。 -
要让
vector<Enemy>工作,您的课程必须是可复制的。 “一堆我想不通的问题”表明您的班级在复制时表现不佳。它应该正常运行,或者禁用复制。谷歌“三规则”(或“五规则”)。 -
我的水晶球告诉我你的
Enemy类中有std::vector<Enemy*>。 -
对象将自身添加到数据结构中是不寻常的。这个
enemies变量在哪里?是static还是global?对象是否在其析构函数中移除自身?