Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++有限状态机_C++_State Machine - Fatal编程技术网

C++有限状态机

C++有限状态机,c++,state-machine,C++,State Machine,我被布置了一个家庭作业,我似乎无法集中注意力。我们的老师要我们编写一个有限状态机。这是密码 #ifndefine #define FINITE_STATE_MACHINE_H #include <iosfwd> class FiniteStateMachine { Private: friend std::ostream &operator<< (std::ostream &, FiniteStateMachi

我被布置了一个家庭作业,我似乎无法集中注意力。我们的老师要我们编写一个有限状态机。这是密码

#ifndefine  
#define FINITE_STATE_MACHINE_H
#include <iosfwd>

class FiniteStateMachine
    {
        Private:
        friend std::ostream &operator<< (std::ostream &, FiniteStateMachine const &);

        public:
            FiniteStateMachine(){}
            virtual FiniteStateMachine *changeState() const = 0;
            virtual char const *toString() const = 0;
            virtual ~FiniteStateMachine(){}
    };

class ON : public FiniteStateMachine
    {
        private:

        public:
            ON(){}
            FiniteStateMachine *changeState() const;
            char const *toString() const;
    };

class OFF : public FiniteStateMachine
    {
        private:        

        public:
            OFF(){ }
            FiniteStateMachine *changeState() const;
            char const *toString() const;
    };

#endif
编译器返回了以下错误 无法将“FiniteStateMachine”转换为“FiniteStateMachine*”

一位同学建议将其放入构造函数中,而不是简单地调用changeState

OFF::OFF()
    {


        FiniteStateMachine *OFF::changeState() const
            {
                FiniteStateMachine *on = new ON;
                return *on;
            }

    }
编译器返回错误 令牌前声明中的限定id

表示它处于changeState和的之间

在更多的键盘敲击之后,我似乎需要写作了

FiniteStateMachine *OFF::changeState() const
    {
        return new OFF();
    }

尝试查找“状态模式”。乙二醇


此设计模式旨在解决您的要求。

我在这里看不到任何代码,只有您的声明。你自己试过什么吗?我们不是做我的作业平台…向我们展示您尝试了什么,以及您收到了什么错误消息。它似乎不起作用,对什么是错误的描述没有帮助。我已经为昨天尝试的changeState函数添加了代码,以及今天早上一位同学为OFF构造函数建议的代码。你能提供示例代码吗?这可能有什么用?请查看链接页面的“代码示例”下的。有一个例子非常符合他的要求。
FiniteStateMachine *OFF::changeState() const
    {
        return new OFF();
    }