矢量元素不更新

时间:2012-12-22 16:34:20

标签: c++

为什么i.X和i.Y没有在fb.Entities集合中更新?

我做错了什么?我正在学习,这是更新向量中某些内容值的正确方法吗?

    for (Entity i : fb.Entities) 
    {
        if (i.Serial == SerialID)
        {
            i.X = (USHORT)((data[5] << 8) + data[6]);
            i.Y = (USHORT)((data[7] << 8) + data[8]);
            break;
        }
    }

2 个答案:

答案 0 :(得分:3)

你需要

for (Entity& i : fb.Entities) 

取实际实体,而非副本。

答案 1 :(得分:3)

您需要将引用带到容器元素:

for (Entity & i : fb.Entities)  { /* ... */ }
//         ^^^

可替换地:

for (auto & i : fb.Entities)

(否则,i将是容器元素的副本,因此对其的任何更改都将丢失。)