Действительно ли это при разыменовании итератора

 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 — это очередь.

-2

Решение

Нет, указанный вами код неверен.

. имеет более высокий приоритет, чем унарный *, Чтобы получить доступ к элементу, указанному iter ты должен написать (*iter).id или же iter->idне *iter.id,

2

Другие решения

Вы пробовали это? Если вы получили ошибку компиляции, пожалуйста, сообщите нам, что это было.
Кроме того, было бы очень полезно увидеть тип dlQueue,

И то и другое (*iter).id а также iter->id должно привести к константная ссылка на id (при условии, dlQueue содержит объекты с доступным членом под названием id). Вы не можете назначить ссылку на const, но это не связано с вашим выбором *iter. или же iter->,


Если вам нужно модифицировать элементы, которые вы перебираете, используйте begin вместо cbegin и т.п.

for (auto iter = dlQueue.begin(); iter != dlQueue.end(); ++iter)
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;
}
}

это помогает?

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector