2014-10-29 1 views
0

와 목록 나는 C++에서 std::list있어 나는 각 개체의 값을 업데이트 할 for(Type t : list) 작업을 사용하려고 해요. 그래서 저는 볼이라는리스트를 가지고 있고 각 볼은 위치를 가지고 있습니다. 루프의 코드는 다음과 같습니다.업데이트 성병의 각 값 :: foreach는 루프 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