Обновляйте каждое значение в std::list с помощью цикла foreach C

#c

#c #циклы #c 11 #foreach

Вопрос:

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

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

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

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

Ответ №1:

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

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

Или просто

 for( autoamp; ball : balls)
            ball.position = calculateBallPosition(ball);