功能类型我想用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'的一个参数。我不需要每个州的单独的类实例;我只需要这些功能。 –
为了澄清,我想'国'要接收一个参数,然后返回一个新的'国',这本身就是一种方法,而不是一个类实例的方法。 –
我明白了,我想我误解了你的代码。 –