for (auto iter = dlQueue.cbegin(); iter != dlQueue.cend(); ++iter)
{
// reference to the current element in the container
if (*iter.id == listid)
{
*iter.stall = newstall & 0xFFFFFFF;
}
}
当我取消引用它引用的对象时,我能够检查对象的状态;即身份证。或者这只会给我一个迭代器作为回报。
我不能去:
iter -> id
DlQueue是一个出队。
答案 0 :(得分:2)
不,你引用的代码是错误的。
.
的优先级高于一元*
。要访问iter
引用的元素的成员,您应该写(*iter).id
或iter->id
,而不是*iter.id
。
答案 1 :(得分:0)
dlQueue
的类型非常有用。
(*iter).id
和iter->id
都应该导致对的 const引用(假设dlQueue
包含一个名为id
的可访问成员的对象。您无法分配给const引用,但这与您选择的*iter.
或iter->
无关。
如果您需要修改您正在迭代的项目,请使用begin
代替cbegin
等。
for (auto iter = dlQueue.begin(); iter != dlQueue.end(); ++iter)
答案 2 :(得分:0)
我修复了代码中的明显错误:
for (auto iter = dlQueue.begin(); iter != dlQueue.end(); ++iter) {
// if the id matches:
if (iter->id == listid) {
// assign to stall a bitmasked version of newstall:
iter->stall = newstall & 0xFFFFFFF;
}
}
有帮助吗?