lundi 9 janvier 2017

Attribute declared in default? (State design pattern)

I have class Prince and Frog (both are children of State (which is virtual) and have slightly differently declared methods welcome() and sayGoodbye()

My only question is why isn't State* m_state public? (Is it default? -- and what does THAT mean?) Code is 100% good, but I have never seen declaration like this until the teacher gave us materials about Design Patterns.

Monster.h

class Monster{
    State* m_state;
public:
    Monster();
    void kiss();
    void welcome();
    void sayGoodbye();
    ~Monster();
};

Monster.cpp

Monster::Monster(){
    m_state = new Frog();
}

void Monster::kiss(){
    delete m_state;
    m_state = new Prince();
}

void Monster::welcome(){
    m_state->welcome();
}

void Monster::sayGoodbye(){
    m_state->sayGoodbye();
}

Monster::~Monster(){
    delete m_state;
}

Aucun commentaire:

Enregistrer un commentaire