2009-02-19 11 views
1

Lors de la création d'un système d'état qui suit le state design pattern (qui fonctionne assez bien jusqu'à présent) et je me demande maintenant s'il existe un moyen d'envoyer des données arbitraires à ce système. Je pensais que cela pourrait être possible en utilisant une classe Stimulus. Le système lui-même est composé dans un autre objet qui peut répondre aux stimuli, et la machine d'état et les états eux-mêmes peuvent également avoir des stimuli, et ils passeront des niveaux externes vers les niveaux internes via des appels de fonction. Le problème étant que les stimuli doivent transporter des données arbitraires à ces différents niveaux, et je ne peux pas penser à un moyen simple de le sortir. Je pensais que cela pourrait être possible en utilisant un dynamic_cast, mais je me demandais s'il pourrait y avoir une meilleure façon.Envoi de données arbitraires via plusieurs fonctions

Répondre

1

Si c'est vraiment arbitraire, dynamic_cast est votre meilleur choix. Si vous souhaitez que toutes les parties de la machine d'état travaillent sur un nombre fini de méthodes de données, il serait plus élégant d'avoir toutes les classes de données héritées d'une classe virtuelle pure qui décrit ces méthodes, alors faites tout passer par cette classe.

+0

Si les classes de données implémentent toutes une interface particulière ("pure virtual class"), alors pourquoi s'embêter avec dynamic_cast? Pourquoi ne pas simplement appeler cette interface? –

2

boost :: tout peut vous être utile selon ce que vous faites.

Questions connexes