W mojej klasie mam dwie prywatne członków:mogę uzyskać wskaźnik do aktualnej wartości iteratora
std::list<MyObject> objects;
MyObject *selecteObj;
Gdy wystąpi zdarzenie Chciałbym iterację listy i uruchomić jakiś rodzaj testu, który będzie ustępuje tylko na jednej z pozycji na liście. Chciałbym zapisać wskaźnik do tego elementu do użycia w innym miejscu.
std::list<MyObject>::iterator i;
for (i = objects.begin(); i!=objects.end(); ++i){
if (i->test())
selectedObj = i;
}
gdzie indziej w innym sposobie
if (selectedObj !=null)
tmpObj->doSomething();
Jednak to nie działa, ponieważ i
nie jest wskaźnikiem jego iterator chociaż można traktować jak wskaźnik do MyObject
.
Czy można pobrać wskaźnik, który iterator przechowuje wewnętrznie, aby móc go użyć gdzie indziej?
Czy źle o tym myślę?
Jaki jest właściwy sposób realizacji tego, co próbuję zrobić?
Z pewnością masz na myśli 'std :: addressof (* i)', nie? OP nie pytał, jak wywołać obiekt '&' -operator ... –
@KerrekSB: Myślę, że chodziło o 'std :: addressof' (zamiast' std :: address_of'), nieprawdaż? : P – Nawaz
@Nawaz: oh, co powiedziałem * ja *? ;-) –