Hi Chiem,
>If you create an action, and inside that action you do a
get_attribute on the state machine, and that state machine (MSM) is a
>sub-statemachine of another (parent) MSM, and that sub-machine state happens to be the initial state of the parent machine
>(that's a lot of ifs!), the code will not compile. It aborts with the
mysterious
error:
<snip>
>BOOST_MSM_EUML_ACTION(someAction)
>{
>
template <class Event,class FSM,class STATE>
> void
operator()(Event const& event,FSM& fsm, STATE&)
>
{
> fsm.get_attribute(borrowedBuffer_attribute)=1;
> }
>};
Try:
BOOST_MSM_EUML_ACTION(someAction)
{
template <class
Event,class FSM,class STATE>
void operator()(Event const&
event,FSM& , STATE& state)
{
state.get_attribute(borrowedBuffer_attribute)=1;
}
};
MSM_A_player is a state machine, but used inside MSM_B_player, it is a substate, right? Therefore, in its entry, it is represented by the STATE parameter, not FSM.
HTH,
Christophe