我正在尝试用C ++实现,此链接针对C语言描述了状态机:https://barrgroup.com/Embedded-Systems/How-To/Coding-State-Machines。
我创建了一个实现状态机行为的Fsm类,以及一个其方法将是状态的Machine类。
代码有效,但是当我尝试以状态state保存Machine方法的内存地址时,它会生成警告(-Wpmf转换)。>
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 };
我希望解决-Wpmf-conversions警告。
我正在尝试用C ++实现,此链接针对C语言描述了状态机:https://barrgroup.com/Embedded-Systems/How-To/Coding-State-Machines。我创建了一个Fsm类,其中...
State
确实对应于功能指针。