更新在一个std每个值::列表与foreach循环C++

问题描述:

我有C++中的std::list,我试图用一个 for(Type t : list) 操作更新每个对象的值。所以我有一个名为球的列表,每个球都有一个位置。我为循环代码:更新在一个std每个值::列表与foreach循环C++

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

其中calculateBallPosition拿球并返回其新的位置,并根据经过时间。

我遇到的问题是,列表中的元素的值似乎没有更新。当循环运行后检查它们的值时,它和以前一样。我猜我的错误在于理解这个循环的工作方式,但我一直无法弄清楚如何解决这个问题。

你把原来对象的一个​​副本,使用参考

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