У меня есть std::vector<Enemy*> enemies
, и когда я создаю новый Enemy
, я делаю enemies.push_back(this)
. Это работает на то, что я делаю, но мне интересно, есть ли способ, чтобы вектор не нуждался в указателях противников. Я пробовал только std::vector<Enemy>
, но, похоже, это вызывает множество проблем, которые я не могу понять.C++ вектор без указателей
т.е. - пришлось изменить на 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()' обычно - это то, как я делал. –
Я не понимаю, почему вам нужно делать push_back (** this **) (акцент на 'this'). –