繁体   English   中英

在std :: list上迭代的项的指针

[英]Pointer for item in iteration over std::list

我正在开发一个非常基本的游戏,我有一个与我的游戏相关的std :: list集合。 我宣称它是:

std::list<Target> targets;

当我迭代它时,使用

for (std::list<Target>::iterator iter = targets.begin(); iter != targets.end(); iter++) {
        Target t = *iter;
                t.move();
}

我的对象没有在GUI上更新。 但是,用targets.front().move()替换迭代循环,我的一个对象正确移动。 我想这是因为我没有使用指针迭代集合。 谁能解释一下这是怎么做到的? 谢谢。

您正在复制对象,这样做:

*iter.move()

如果你使用Target t = *iter; 你实际上是复制你的对象并移动它,而不是移动你想要的对象。

正如xtofl所说(thx)你也可以得到参考。

Target &t = *iter;
t.move();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM