如果我向事件添加属性,我知道我可以像事件一样使用事件名称......
BOOST_MSM_EUML_EVENT_WITH_ATTRIBUTES(*someEvent*, *someAttributeList*)
someStateMachine.process_event(
someEvent (
valueOfSomeAttribute1, // sets the attribute value here
valueOfSomeAttribute2))
并且在一个动作中我可以通过写
来回复evt.get_attribute(someAttribute1); // retrieve the attribute value
现在,如果我为整个机器设置属性,就像这样:
BOOST_MSM_EUML_DECLARE_STATE_MACHINE((transition_table,
init_ << initState,
Entry_Action,
Exit_Action,
attributes_ << someAttribute1 << someAttribute2,
configure_<< someConfigurationStuff ),
newStateMachineType)
如何设置someAttribute1的值?
州的同样问题:
BOOST_MSM_EUML_STATE(
(someEntryAction,
someExitAction,
attributes_ << someAttribute1,
configure_<< someConfigurationStuff)
,newStateName)
如何设置someAttribute1的值?
最后,
有没有办法在创建对象后更改属性?
例如,我想拥有状态机的属性,并且在我的一个州中,记住我可以存储在状态机中的一些信息。 (在这种情况下,我想存储一个套接字。)
感谢。
答案 0 :(得分:1)
如何设置someAttribute1的值? 你可以:
对于州,你也可以这样做。而对于状态机,嗯,同上。 同样,您可以在操作中使用Fsm模板参数,也可以使用仿函数(fsm_,event_等)
您可以在示例或测试中找到所有好的示例(例如test / CompositeEuml.cpp或test / AnonymousEuml.cpp)。
HTH, 克里斯托夫