list<CPoint> l;
l.push_back(CPoint(1,2));
l.push_back(CPoint(30,40));
l.push_back(CPoint(4,6));
l.push_back(CPoint(70,80));
CPoint * point = 0;
for (list<CPoint>::iterator iter = l.begin();
iter != l.end();
iter++)
{
cout << iter->x << " , " << iter->y << endl;
// compilation error, I can't typcast it like below?
point = (CPoint *) iter;
}
Проблемы с выше, является то, как typcast в iter
в петле фактического указателя структуры данных? Таким образом, я могу написать код, например, point.x
, point.y
.Как typcast итератор к своей первоначальной структуре
Вышеупомянутый демо-код, который я написал, но на самом деле у меня есть этот код в функции поиска. Если элемент найден в списке, он вернет указатель на этот элемент, иначе NULL. Чтобы вернуть этот указатель, мне нужно разыменовать итератор обратно на указатель базовой структуры данных, но как? Благодарю.