Uso inválido da função de membro não estático c ++

Eu estou seguindo issoexemplo. Mas quando eu compilo, ele retorna um erro:

Uso inválido da função de membro não estático

na linha

void(Machine:: *ptrs[])() = 
  {
    Machine::off, Machine::on
  };

Eu tentei adicionarstatic paravoid on(); em aula

class Machine
{
  class State *current;
  public:
    Machine();
    void setCurrent(State *s)
    {
        current = s;
    }
    static void on(); // I add static here ...
    static void off(); // and here
};

Mas reclama que

Uso inválido do membro Machine :: current na função de membro estático

Você pode me ajudar a consertar isso?

questionAnswers(1)

yourAnswerToTheQuestion