我是新手来提升 msm 和提升一般。我想以某种方式封装所有:
- 事件结构
- stateMahine 结构包含转换表结构和状态结构
一个类内。
我怎样才能做到这一点?
// events
struct event1 {};
// front-end: define the FSM structure
struct my_machine_ : public msm::front::state_machine_def<my_machine_>
{
// The list of FSM states
struct State1 : public msm::front::state<>
{
// every (optional) entry/exit methods get the event passed.
template <class Event,class FSM>
void on_entry(Event const&,FSM& ) {std::cout << "entering: State1" << std::endl;}
template <class Event,class FSM>
void on_exit(Event const&,FSM& ) {std::cout << "leaving: State1" << std::endl;}
};
struct State2 : public msm::front::state<>
{
template <class Event,class FSM>
void on_entry(Event const& ,FSM&) {std::cout << "entering: State3" << std::endl;}
template <class Event,class FSM>
void on_exit(Event const&,FSM& ) {std::cout << "leaving: State3" << std::endl;}
};
// the initial state of the player SM. Must be defined
typedef State1 initial_state;
typedef my_machine_ p; // makes transition table cleaner
// Transition table
struct transition_table : mpl::vector<
// Start Event Next Action Guard
// +---------+-------------+---------+---------------------+----------------------+
Row < State1 , event1 , State2 >,
Row < State2 , event1 , State1 >
> {};
};