我不知道我在这里做错了什么。 目标是一个有限状态机,它根据它得到的字符改变状态及其行为,但我甚至无法得到项目结构......这是我到目前为止的代码,它不会恭维,对不起我没有错误代码,但是在Automat的构造函数中有一个是definatley,我试图将currentState设置为initial。
#ifndef Automat_H_
#define Automat_H_
class State;
class Automat {
public:
Automat();
virtual ~Automat();
void setCurrentState(State* newCurrentState);
void read(char c);
private:
State* currentState;
};
#endif /* Automat_H_ */
#ifndef STATE_H_
#define STATE_H_
class Automat;
class State {
virtual ~State();
virtual void read(char c, Automat* m) = 0;
};
#endif /* STATE_H_ */
#ifndef INITIAL_H_
#define INITIAL_H_
#include "State.h"
class Initial: public State{
virtual ~Initial();
void read(char c, Automat* m);
};
#endif /* INITIAL_H_ */
//Automat.cpp
#include "../includes/Automat.h"
Automat::Automat() {
currentState = new Initial();
}
Automat::~Automat() {
// TODO Auto-generated destructor stub
}
void Automat::read(char c){
//currentState->read(c, this);
}
答案 0 :(得分:1)
据推测,丢失的错误消息告诉您究竟出了什么问题。我的编译器会出现像
这样的错误prog.cpp:29:13: error: 'virtual State::~State()' is private
因为State
和Initial
的所有成员都是私有的 - 如果您使用class
关键字引入类定义,那么这是默认设置。
将public:
添加到这些类定义中,或将关键字更改为struct
。
您还需要在"Initial.h"
中加入"Automat.cpp"
,因为它需要该类的完整定义。