功能類型我想用C寫的一個很小的狀態機++。我希望這些狀態是機器類的方法,並且每個狀態在運行時都應該返回到新的狀態。當然,我正在使用一些typedef來幫忙。返回本身
template <typename C, typename E>
using State = State<C, E> (C::*)(Stream<E>&);
甲狀態應該是一個成員函數(在C
類),它接受一個流對象,併產生一個新的狀態。我收到以下錯誤。
fsm.hpp:8:15: error: ‘State’ does not name a type
using State = State<C, E> (C::*)(Stream<E>&);
顯然,State
是不是應該申報State
行宣佈呢。據我所知,沒有辦法「轉發聲明」typedef,那麼聲明這個typename的適當方式是什麼?
'State'僅對應於功能(當然,方法)型。狀態機本身是'C'類型,是'State'的一個參數。我不需要每個州的單獨的類實例;我只需要這些功能。 –
爲了澄清,我想'國'要接收一個參數,然後返回一個新的'國',這本身就是一種方法,而不是一個類實例的方法。 –
我明白了,我想我誤解了你的代碼。 –