オートマトンの多くの状態のジェネリック クラスがあります。次のように宣言されています。
#ifndef STATE_H_
#define STATE_H_
#include "Automat.h"
class State {
public:
virtual void readChar(char c, Automat* automat) = 0;
virtual ~State(){};
};
#endif /* STATE_H_ */
私は日食でこのエラーを受け取ります:
この行に複数のマーカー
- 'Automat* const' から 'int*' への引数 2 の既知の変換はありません</li>
- virtual void State::readChar(char, int*)
- 「Automat」は宣言されていません
私のオートマットは次のとおりです。
#ifndef Automat_H_
#define Automat_H_
#include "../../Scanner/src/IScanner.h"
#include "./States/State.h"
class Automat {
public:
int count;
State* current;
IScanner* scanner;
Automat(IScanner *s);
void readChar(char c);
void setState(State *s);
void error();
~Automat();
};
#endif /* Automat_H_ */
最後に Automat の実装ですが、いくつかのメソッドを省略します。
#include "Automat.h"
#include "./States/StartState.h"
Automat::Automat(IScanner *s) {
current = StartState::makeStartState();
scanner = s;
count = 0;
}
void Automat::readChar(char c) {
current->readChar(c, this);
}
何が原因なのかわかりません。インターフェイスで何かを宣言する必要がありますか? なぜ引数を変換したいのですか?
よろしくお願いします。