更新在一个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);
这是完美的,谢谢! – LarrySellers 2014-10-29 04:17:27