J'ai vraiment du mal avec cette id�e de mettre des variables dans une classe �tat.
L'�tat d'une machine � �tat, c'est l'union de la valeur de tous ses membres. Autrement dit, tout ce qui caract�rise l'�tat de la machine, doit �tre dans la classe machine.
Sinon, je vois une grosse diff�rence s�mantique entre ce que tu fais et l'impl�mentation initiale :
1 2 3 4
| void ChangeState( AbstractState * newState ) {
delete m_state;
m_state = newState;
} |
m_state est � priori un �tat nouvellement cr�� (je vois mal comment faire autrement).
Tandis que :
void GoToState1() { m_state = &m_state1; }
m_state est un ancien �tat, qu'on ressuscite, mais donc, avec ses anciens membres.
Ce qui fait que l'�tat de ta machine est tr�s largement complexifi�, puisque l'�tat actuel est aussi d�pendant de ton historique, et d'�tats non courant.
Honn�tement, je ne vois pas comment on peut faire un minimum de preuve de fonctionnement (ce qui est quand m�me l'int�r�t d'une machine � �tats) l� dessus.
Partager