У меня есть PolygonList и тип Polygon, которые представляют собой std :: lists of points или списки списков точек.
class Point {
public:
int x, y;
Point(int x1, int y1)
{
x = x1;
y = y1;
}
};
typedef std::list<Point> Polygon;
typedef std::list<Polygon> PolygonList;
// List of all our polygons
PolygonList polygonList;
Однако я запутался в ссылочных переменных и указателях.
Например, я бы хотел иметь возможность ссылаться на первый полигон в моем списке polygonList и выдвигать на него новую точку.
Итак, я попытался установить фронт PolygonList в Polygon с именем currentPolygon, например:
Polygon currentPolygon = polygonList.front();
currentPolygon.push_front(somePoint);
и теперь я могу добавить точки к currentPolygon, но эти изменения в конечном итоге не будут отражены в том же многоугольнике в polygonList. Является ли currentPolygon просто копией полигона в начале списка polygonList? Когда я позже перебираю polygonList, все точки, которые я добавил в currentPolygon, не отображаются.
Это работает, если я сделаю это:
polygonList.front().push_front(somePoint);
Почему они не одинаковы и как я могу создать ссылку на физический передний многоугольник, а не его копию?