Hi everyone,
I have read the article at: http://www.objectmentor.com/resource...les/umlfsm.pdf
I have managed to compile following code:
Qt Code:
class Turnstile { public: virtual void Lock(); virtual void Unlock(); virtual void Thankyou(); virtual void Alarm(); }; class TurnstileFSM; class LockedState; class UnlockedState; class TurnstileState { public: virtual void Coin(TurnstileFSM*) = 0; virtual void Pass(TurnstileFSM*) = 0; protected: static LockedState lockedState; static UnlockedState unlockedState; }; class TurnstileFSM : public Turnstile { public: void SetState(TurnstileState* s) {itsState = s;} void Coin() {itsState->Coin(this);} void Pass() {itsState->Pass(this);} private: TurnstileState *itsState; }; class LockedState : public TurnstileState { public: virtual void Coin(TurnstileFSM* t) { // t->SetState(&unlockedState); t->Unlock(); } virtual void Pass(TurnstileFSM* t) { t->Alarm(); } }; class UnlockedState : public TurnstileState { public: virtual void Coin(TurnstileFSM* t) { t->Thankyou(); } virtual void Pass(TurnstileFSM* t) { t->SetState(&lockedState); t->Lock(); } }; LockedState TurnstileState::lockedState; UnlockedState TurnstileState::unlockedState;To copy to clipboard, switch view to plain text mode
My question is:
1. How do I use this code? Give me an example.
2. Why would I need to 2 global state variables:
LockedState TurnstileState::lockedState;
UnlockedState TurnstileState::unlockedState;
Thanks.
Bookmarks