Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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++中实现一个非常简单的FSM。问题是,这个程序在执行后会立即崩溃。我是新的C++,所以我找不到任何bug在这里。有人能帮忙吗?提前谢谢 #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(); } #包括 使用名称空间std; 阶级国家{ 公众: 虚拟~State(){} 虚拟空更新(); }; 国家:公共国家{ 公众: virtual void update(){cout_C++_Fsm - Fatal编程技术网

简单程序崩溃 我试图在C++中实现一个非常简单的FSM。问题是,这个程序在执行后会立即崩溃。我是新的C++,所以我找不到任何bug在这里。有人能帮忙吗?提前谢谢 #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(); } #包括 使用名称空间std; 阶级国家{ 公众: 虚拟~State(){} 虚拟空更新(); }; 国家:公共国家{ 公众: virtual void update(){cout

简单程序崩溃 我试图在C++中实现一个非常简单的FSM。问题是,这个程序在执行后会立即崩溃。我是新的C++,所以我找不到任何bug在这里。有人能帮忙吗?提前谢谢 #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(); } #包括 使用名称空间std; 阶级国家{ 公众: 虚拟~State(){} 虚拟空更新(); }; 国家:公共国家{ 公众: virtual void update(){cout,c++,fsm,C++,Fsm,Hey_state*h是一个指针 它指向哪里?你不知道。 其值未初始化 稍后,您将取消引用同一指针,该指针现在复制到currState currState->update(); 有什么?你不知道。 您正在取消对未初始化指针的引用。嘿_state*h; 这将创建一个指向Hey_state的指针,该指针可以随机指向内存中的任何位置。实际上没有创建任何对象 Stranger s(h); s.greet(); 这会尝试使用从未创建过的Hey_状态,并给出一个错误 尝试: 创建一

Hey_state*h
是一个指针

它指向哪里?你不知道。

其值未初始化

稍后,您将取消引用同一指针,该指针现在复制到
currState

        currState->update();
有什么?你不知道。


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

嘿_state*h;

这将创建一个指向
Hey_state
的指针,该指针可以随机指向内存中的任何位置。实际上没有创建任何对象

Stranger s(h);
s.greet();
这会尝试使用从未创建过的Hey_状态,并给出一个错误

尝试:


创建一个对象,该代码为“代码> HyyStAt/Ung>,并将一个指针传递给<代码>陌生人> /Cord>< /P>,您可以使用调试器并告诉我们它崩溃的是什么行吗?*,因为您是C++的新手,应该提到您必须学会使用调试器,这样的问题就不会那么神秘了。

Hey_state h;
Stranger s(&h);
s.greet();