Это должен быть правильный бит кода.
#include <iostream>
#include <list>
class Point {
public:
int x, y;
Point(int x1, int y1)
{
x = x1;
y = y1;
}
};
int main()
{
std::list<Point> points;
points.push_back(Point(0, 0));
points.push_back(Point(1, 1));
points.push_back(Point(2, 2));
std::list<Point>::iterator iter;
for(iter = points.begin(); iter != points.end(); ++iter)
{
Point test = *iter;
std::cout << test.x << ", " << test.y << "; ";
}
std::cout << std::endl;
return 0;
}
Используя этот код:
jasons-macbook41:~ g++ test.cpp
jasons-macbook41:~ ./a.out
0, 0; 1, 1; 2, 2;
jasons-macbook41:~
Хотя я бы не стал создавать временную копию Point, как это делает ваш код. Я бы переписал цикл так:
for(iter = points.begin(); iter != points.end(); ++iter)
{
std::cout << iter->x << ", " << iter->y << "; ";
}
Итератор синтаксически похож на указатель.
EDIT:
Учитывая вашу новую проблему, отбросьте «новое» со строительной линии. Это создает указатель на точку, а не на точку в стеке. Это будет действительно:
Point* temp = new Point(0, 0);
Или это:
Point temp = Point(0, 0);
И с последним вам будет лучше.