私は私の頭を包み込むように見えない宿題を与えられました。私たちの教師は、有限状態マシンをプログラムすることを望んでいます。ここでコードC++有限状態マシン
#ifndefine
#define FINITE_STATE_MACHINE_H
#include <iosfwd>
class FiniteStateMachine
{
Private:
friend std::ostream &operator<< (std::ostream &, FiniteStateMachine const &);
public:
FiniteStateMachine(){}
virtual FiniteStateMachine *changeState() const = 0;
virtual char const *toString() const = 0;
virtual ~FiniteStateMachine(){}
};
class ON : public FiniteStateMachine
{
private:
public:
ON(){}
FiniteStateMachine *changeState() const;
char const *toString() const;
};
class OFF : public FiniteStateMachine
{
private:
public:
OFF(){ }
FiniteStateMachine *changeState() const;
char const *toString() const;
};
#endif
命令は、ONの状態にOFF遷移の状態及びその逆にその関連するすべてのメンバ関数を含んFiniteStateMachine.cppファイルを作成しているされています。
私は反対の状態の新しいインスタンスを返すためにchangeState()関数を記述しようとしましたが、動作したくないようで、どこが間違っているのかわかりません。
私はFiniteStateMachine.cpp
FiniteStateMachine *OFF::changeState() const
{
FiniteStateMachine *on = new ON;
return *on;
}
に次を持つオブジェクトに新しいインスタンスを返すとしようとしていたと、コンパイラは次のエラー を返していましたが変換できない「FiniteStateMachine」の「FiniteStateMachine *」に
同級生は()
OFF::OFF()
{
FiniteStateMachine *OFF::changeState() const
{
FiniteStateMachine *on = new ON;
return *on;
}
}
changeStateを呼び出すだけで、コンストラクタにそれを置く代わりの提案を返します
コンパイラは、それは私が
を書き込むために必要と思われる叩いchangeStateと()さんよりキーボードの後の間でだ示す「(」トークン
前の宣言でエラー 資格-IDを返します。
FiniteStateMachine *OFF::changeState() const
{
return new OFF();
}
ここにコードはありません。宣言だけは表示されません。あなた自身で何か試しましたか?私たちは "宿題をする"プラットフォームではありません。 – Klaus
あなたが試したこととあなたが受け取ったエラーメッセージを教えてください。 "うまくいかない"とは何が間違っているのか説明していません – Caleth
私は昨日やっていたchangeState()関数のコードと、今朝オフコンストラクタのクラスメイトが提案したコードを追加しました。 –