#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);