我正在尝试用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警告。