首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >状态模式- c++

状态模式- c++
EN

Stack Overflow用户
提问于 2015-04-20 17:39:40
回答 1查看 398关注 0票数 0

我正在尝试用状态设计模式实现一个有限状态机,我是c++的新手,也是一个初学者。包含和头文件把我搞糊涂了,我不太确定如何正确设置这个项目。我可能应该从其他方面开始,但我真的别无选择。

机器的目标是读取字符,并根据状态执行一些不同的操作。

这是我想到的类布局:

代码语言:javascript
复制
Machine.h

class Machine{
   void setCurrentState(State s);
   State currentState;
}

State.h

class State{
   virtual void read(char c, Machine* m) = 0;
}

(Should i make a header file for each derived class?)

Initial.h

class Initial: public State{
   void read(char c, Machine* m){
      m->setCurrentState(new SomeState());
   }
}

我试着这样做,但我不知道我应该包括在哪里。我得到了,取决于我做错误的方式,错误从未定义的类型到未定义的引用vtable。也许你们能帮我把这个设置好,让链接在点上,我非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2015-04-20 17:48:18

您可以使用C守卫。这意味着你在每个头文件中声明了一些变量。

代码语言:javascript
复制
#ifndef STATE_H
#define STATE_H
your header
#endif

现在,#ifndef和#endif之间的所有内容将被包含两次,并且ld将不会返回错误。

在每个源文件中,您只需包含源文件所需的内容。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29744255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档