State machine:
Run <-> Stand
driver.m_state->run()
class State
{
void run();
void stand();
};
class Driver
{
private:
State* m_state;
public:
Driver(State *pState) : m_state(pState) {};
~Driver() { };
void Run() { return m_state->run(); };
void Stand() { return m_state->stand(); };
};
class RunState : public State
{
public:
void stand() { };
};
class StandState : public State
{
public:
void run() { };
};
int main()
{
Driver sb(new StandState());
sb.Run(); // invoke the StandState::run();
return 0;
}
Program on interface