L'expression doit avoir un type de pointeur à classe

J'ai un struct "MachineState" et j'ai créé une liste de type "MachineState*". Lorsque j'Essaie de parcourir la liste, je reçois des "

error C2839: invalid return type 'MachineState **' for overloaded 'operator ->

Je suis l'aide de Microsoft Visual Studio 10. J'ai googlé l'erreur et tout ce que je pouvais trouver était: "L' -> opérateur doit retourner une class, struct ou union, ou une référence à un".

Struct MachineState
{

   template <typename MachineTraits>
   friend class Machine;

   enum Facing { UP, RIGHT, DOWN, LEFT};
   MachineState()
    : m_ProgramCounter(1)
    , m_ActionsTaken(0)
    , m_Facing(UP)
    , m_Test(false)
    , m_Memory(nullptr)
    ,x(0)
    ,y(0)
    ,point1(25, 10)
    ,point2(10, 40)
    ,point3(40, 40)

   { }


   int m_ProgramCounter;
   int m_ActionsTaken;

   Facing m_Facing;
    bool m_Test;
    int x;
    int y;
    Point point1;
    Point point2;
    Point point3;

};

Je déclare la liste

 std::list<MachineState*> zombs;

C'est là que j'essaie de parcourir ma liste et je reçois l'erreur, sur le "il->point1" en disant que l'expression doit avoir un pointeur sur le type de classe.

    for(std::list<MachineState*>::iterator it = zombs.begin(); it != zombs.end(); it++)
     {
        Point points[3] = {it->point1, it->point2, it->point3};
        Point* pPoints = points;
        SolidBrush brush(Color(255, 255, 0, 0));
        m_GraphicsImage.FillPolygon(&brush, pPoints,3);
     }

Si quelqu'un peut m'expliquer quel est wron

source d'informationauteur John Kemp