2014-10-29 3 views
0

У меня есть в C++ в std::list, и я пытаюсь использовать операцию for(Type t : list) обновить значение каждого объекта. Поэтому у меня есть список, называемый мячами, и каждый мяч имеет позицию. Мой код для петли:Update каждое значение в станд :: список с Еогеасп контуром C++

for(OpenGLView::AssetInstance ball : balls) 
      ball.position = calculateBallPosition(ball); 

где calculateBallPosition принимает мяч и возвращает новую позицию в зависимости от времени, прошедшего.

Проблема, с которой я сталкиваюсь, заключается в том, что значение элементов в списке, похоже, не обновляется. Когда я проверю их значения после запуска цикла, это то же самое, что было раньше. Я предполагаю, что моя ошибка заключается в понимании того, как работает этот цикл, но я не смог понять, как его исправить.

ответ

7

Вы берете копию исходного объекта, используйте ссылку на

for(OpenGLView::AssetInstance& ball : balls) 
      ball.position = calculateBallPosition(ball); 

Или просто

for(auto& ball : balls) 
      ball.position = calculateBallPosition(ball); 
+0

Это отлично, спасибо! – LarrySellers

Смежные вопросы