我在 C++ 中有一个 std::list
,我正在尝试使用一个
for(Type t : list)
更新每个对象的值的操作。所以我有一个名为 balls 的列表,每个球都有一个位置。我的循环代码是:
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);
关于c++ - 使用 foreach 循环 C++ 更新 std::list 中的每个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26622385/