2009-02-19 29 views
1

在製作一個遵循state design pattern(迄今爲止運行良好)的狀態系統時,我現在想知道是否有辦法向系統發送任意數據。我想這可能是使用刺激類的可能性。通過多種功能發送任意數據

系統本身被合成到可以響應刺激的另一個對象中,狀態機和狀態自身也可以有刺激,並且它們將通過函數調用從外層傳遞到內層。問題在於刺激需要將任意數據傳送到這些不同的層次,我想不出一個簡單的方法來解決這個問題。

我想這可能是使用dynamic_cast,但我想知道是否有更好的方法。

回答

1

如果確實是任意的,dynamic_cast是您最好的選擇。如果你打算讓狀態機的所有部分在數據的有限數量的方法上工作,那麼讓你傳遞給狀態機的所有數據類都繼承自描述這些方法的純虛擬類會更加優雅,然後通過該課程進行所有傳球。

+0

如果數據類都實現一個特定的接口(「純虛擬類」),那麼爲什麼要動用dynamic_cast呢?爲什麼不簡單地調用該接口? – 2009-02-24 20:03:49

2

boost ::任何可能對你有用,取決於你在做什麼。