2014-10-29 116 views
0

我有C++中的std::list,我試圖用一個 for(Type t : list) 操作更新每個對象的值。所以我有一個名爲球的列表,每個球都有一個位置。我爲循環代碼:更新在一個std每個值::列表與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 2014-10-29 04:17:27