简单的程序崩溃

Mar*_*kus -1 c++ fsm

我试图在C++中实现一个非常简单的FSM.问题是,该程序在执行后会立即崩溃.我是C++的新手,所以我在这里找不到任何错误.有人可以帮忙吗?提前致谢!

#include <iostream>
using namespace std;

class State {
    public:
        virtual ~State() {}
        virtual void update();
};

class Hey_state : public State {
    public:
        virtual void update() { cout << "Hey!\n";}
};

class How_state : public State {
    public:
        virtual void update() { cout << "How are you?\n";}
};

class Stranger {
    public:
        Stranger(State *startState)
        : currState(startState) {}
        void greet() {
            currState->update();
        }
        void setState(State *s) {currState = s;}
    private:
        State *currState;
};

int main() {
    Hey_state *h;
    Stranger s(h);
    s.greet();
}
Run Code Online (Sandbox Code Playgroud)

Dre*_*ann 5

Hey_state *h 是一个指针.

它指向哪里? 你不知道.

它的价值是未初始化的.

稍后,您取消引用相同的指针,现在复制到currState.

        currState->update();
Run Code Online (Sandbox Code Playgroud)

还有什么? 你不知道.

您正在取消引用未初始化的指针.

  • *由于您不熟悉C++,因此应该提到您必须学会使用调试器.那么像这样的问题就不会那么神秘了. (2认同)