2011-02-10 57 views
3

我處於這種情況,我需要修改一個我沒寫的狀態機。該狀態機使用Boost Statechart編寫。不幸的是,我覺得這段代碼難以理解,而且那個寫的代碼是在度假。如何在boost :: statechart中將對象賦予狀態?

問題很簡單,我想:我有一個變量,thing,我想在這些狀態中使用。它代表了需要被告知事物的單一應用程序控制器。我可以給thing什麼構造函數(或任何),使它可用於機器的狀態?

的狀態被宣告爲按照本例:

struct Pumping : sc::state< Pumping, Purifier > 
{ 
    Pumping(my_context ctx) : my_base(ctx) 
    { 
    post_event(EvPumpingStarted()); 
    } 
    // ... 
}; 

P.S.我想爲這個問題找一個更好的標題;幫助讚賞。

回答

4

這聽起來像東西應該傳遞給機器的構造函數?如果是這樣,最好將其設置爲機器的數據成員。各國可以使用outermost_context()函數訪問機器。所以,在一個狀態中,你可以寫一些像outermost_context()。get_thing()這樣的東西。

+0

對於獎勵積分(如果我可以被允許劫持答案?),你會如何使用`simple_state`s,它不能從它們的構造函數訪問外部上下文? (有沒有人試圖嘗試這種方法,還是應該使用`state`來代替?) – drfrogsplat 2011-06-30 06:07:33

相關問題