I'm quite a newbie using C ++. I am trying to implement in C ++, the state machine described in this link for C language:
[https://barrgroup.com/Embedded-Systems/How-To/State-Machines-Event-Driven-Systems][1] .

I have created an Fsm class, which implements the behavior of the state machine, and a Machine class, whose methods will be the states. 

The code works, but it generates a warning (-Wpmf-conversions) when I try to savethe memory address of a Machine method, in `State state__`

    class Fsm
    {
    public:
    	typedef void (*State)();
    private:
    	State state__;
    public:
    	Fsm(State state);
    	void dispatch();
    }; 
    
    Fsm::Fsm(State state)
    {
    	state__ = state ;
    } //Fsm
    
    void Fsm::dispatch()
    {
    	(*state__)() ;
    }
    

    
    class Machine : public Fsm
    {
    public:
    	Machine() : Fsm((State)&Machine::initial) {}       // ctor
    }; 


  [1]: https://barrgroup.com/Embedded-Systems/How-To/State-Machines-Event-Driven-Systems.