В моем классе у меня есть два частных участника:
std::list<MyObject> objects;
MyObject *selecteObj;
Когда происходит событие, я бы хотел пройтись по списку и запустить какой-то тест, который даст только true для одного из элементов в списке. Я хотел бы сохранить указатель на этот элемент для использования в другом месте.
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
.
Можно ли извлечь указатель, который итератор хранит внутри для использования в другом месте?
Я неправильно думаю об этом?
Как правильно выполнить то, что я пытаюсь сделать?