Могу ли я получить указатель на текущее значение итератора

В моем классе у меня есть два закрытых члена:

std::list<MyObject> objects;
MyObject *selecteObj;

Когда происходит событие, я хотел бы повторить итерацию через список и запустите какой-то тест, который вернет истину только для одного из элементов в списке. Я хотел бы сохранить указатель на этот элемент для использования в другом месте.

std::list<MyObject>::iterator i;
for (i = objects.begin(); i!=objects.end(); ++i){
    if (i->test())
        selectedObj = i;
}

В другом месте В другом методе

if (selectedObj !=null)
    tmpObj->doSomething();

Однако это не работает, потому что i не указатель, это итератор, хотя вы можете рассматривать его как указатель на MyObject .

Можно ли получить указатель, который итератор хранит внутри, для использования в другом месте?

Я неправильно об этом думаю?

Как правильно выполнить то, что я пытаюсь сделать?

7
задан slayton 23 December 2011 в 17:27
поделиться