我在學習boost :: statechart。提升狀態圖轉換參數
我想製作一個加載文件的小應用程序。
// --------------------------------
// | |
// | O Project |
// | | |
// | v |
// | ---------------------------- |
// | | | |
// | | Unloaded | |
// | ---------------------------- |
// | | ^ |
// | | EvLoad | EvUnload |<-----O
// | v | |
// | ---------------------------- |
// | | | |
// | | Loaded | |
// | ---------------------------- |
// | | ^ |
// | | | EvLoad |
// | ----- |
// --------------------------------
但我該如何將參數傳輸到狀態,例如,一個文件名? 如果我的名店內EvLoad我可以很容易地訪問它的狀態反應
struct Loaded : sc::simple_state< Loaded, Project>
{
typedef sc::custom_reaction<EvLoad> reactions;
sc::result react(const EvLoad & e)
{
//load file e.path()
...
return discard_event();
}
}
但是,當我在空載狀態下是那麼我調用的加載構造,我不能傳遞參數到它。我提出的唯一解決方法是在轉換之前重新發布事件,但這對我來說看起來有點骯髒。
struct Unloaded : sc::simple_state< Unloaded, Project >
{
typedef sc::custom_reaction<EvLoad> reactions;
sc::result react(const EvLoad & e)
{
post_event(e); //workaround to pass the event to the loaded state
return transit<Loaded>();
}
};
有沒有更好的選擇?
當我明白這一點時,我的生活變得更加容易。 +1 – odinthenerd
你有沒有可以分享的例子? – ksl