我试图在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)
Hey_state *h 是一个指针.
它指向哪里? 你不知道.
它的价值是未初始化的.
稍后,您取消引用相同的指针,现在复制到currState.
currState->update();
Run Code Online (Sandbox Code Playgroud)
还有什么? 你不知道.
您正在取消引用未初始化的指针.