我正在尝试用状态设计模式实现一个有限状态机,我是c++的新手,也是一个初学者。包含和头文件把我搞糊涂了,我不太确定如何正确设置这个项目。我可能应该从其他方面开始,但我真的别无选择。
机器的目标是读取字符,并根据状态执行一些不同的操作。
这是我想到的类布局:
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。也许你们能帮我把这个设置好,让链接在点上,我非常感谢。
发布于 2015-04-20 17:48:18
您可以使用C守卫。这意味着你在每个头文件中声明了一些变量。
#ifndef STATE_H
#define STATE_H
your header
#endif现在,#ifndef和#endif之间的所有内容将被包含两次,并且ld将不会返回错误。
在每个源文件中,您只需包含源文件所需的内容。
https://stackoverflow.com/questions/29744255
复制相似问题