MSM: Initialize inner state machine from outer state machine
Hi,
I have shared data between states which are state machines themselves. I've
stored the shared data in the outer state machine and wish to initialize
each of the inner state machines with a reference to the shared data. Is
this the "right way" to do this? How would I do this?
Here's an example of what I'm doing:
struct Outer_ : state_machine_def
Hi,
I have shared data between states which are state machines themselves. I've stored the shared data in the outer state machine and wish to initialize each of the inner state machines with a reference to the shared data. Is this the "right way" to do this? How would I >do this?
Here's an example of what I'm doing:
struct Outer_ : state_machine_def
{ int foo; struct Inner_ : state_machine_def { int& foo; Inner_(int& f) : foo(f) {} ... } ... }
How do I get the inner state machines constructor called with data from the outer state machine? Or is this just the wrong way to do >things? Thanks
Hi,
sorry for my late answer. There are 2 ways to do this:
- Constructor with arguments (http://svn.boost.org/svn/boost/trunk/libs/msm/doc/HTML/ch03s05.html#d0e2502).
- add a default-ctor to Inner_, then after constructing your fsm, set the data (supposing foo would be a pointer):
Outer outer;
outer.get_state
participants (2)
-
Christophe Henry
-
Dan Schatzberg