实施C ++状态机。如何解决Wpmf对流警告?

问题描述 投票:1回答:1

我正在尝试用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类,其中...

c++ casting function-pointers compiler-warnings state-machine
1个回答
0
投票

State确实对应于功能指针。

© www.soinside.com 2019 - 2024. All rights reserved.