Hello its me again :blink:
I have an error which keeps cropping up with a but of code, I have put a switch statement into a draw class and depending on which case I select it will draw the corresponding shape (normal, rotated, scaled etc) but Im getting list iterator not dereferencable when I select case 2.
void Shape::drawShape(int select)
{
this->select = select;
// plots each vertex and draws a line between them using Bresenham's algorithm
switch (select)
{
case 1:
{
list<Vertex>::iterator current = vertices.begin();
list<Vertex>::iterator previous = vertices.begin();
while (current != vertices.end())
{
Console::gotoXY((*current).getX(), (*current).getY());
cout << "*";
if (current != vertices.begin())
drawLine((*current).getX(), (*current).getY(), (*previous).getX(), (*previous).getY());
previous = current;
current++;
}
previous = vertices.begin();
drawLine(vertices.back().getX(), vertices.back().getY(), vertices.front().getX(), vertices.front().getY());
break;
}
case 2:
{
list<Vertex>::iterator rotate_current = rotated.begin();
list<Vertex>::iterator rotate_previous = rotated.begin();
while (rotate_current != rotated.end())
{
Console::gotoXY((*rotate_current).getX(), (*rotate_current).getY());
cout << "*";
if (rotate_current != rotated.begin())
drawLine((*rotate_current).getX(), (*rotate_current).getY(), (*rotate_previous).getX(), (*rotate_previous).getY());
rotate_previous = rotate_current;
rotate_current++;
}
rotate_previous = rotated.begin();
drawLine(rotated.back().getX(), rotated.back().getY(), rotated.front().getX(), rotated.front().getY());
break;
}
}
}
if i select the first case it work fine but not with the second?
Here is where the function is called
list<Shape*>::iterator itr = shapes.begin();
while(itr!=shapes.end())
{
(*itr)->drawShape(1); //draws fine
(*itr)->drawShape(2); //get error
itr++;
}