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