[statechart] StopWatch aborts on context<StopWatch>()

hi all im pretty sure i just dont understand what context<>() really does and how it works reading the docs/tutorial doesnt seem to help me so, can someone point me to a documentation for boost::statechart and how to get a Pointer/Reference to the currents state_machine from a simple_state? what do i have to keep in mind? just to give an example: if i add the following line in the boost/libs/statechart/examples/StopWatch/StopWatch.cpp file Running() : startTime_( std::time( 0 ) ) { context<StopWatch>(); // <<< added } it compiles and abort's if i try to start the stopwatch i dont understand why? the state_machine is initialized and even the docs say in its comments that i can use it to get the statemachine http://www.boost.org/doc/libs/1_38_0/libs/statechart/doc/tutorial.html#State... but im sure i just miss something any help on this would be great thanks in adavance

Hi [snip]
just to give an example: if i add the following line in the boost/libs/statechart/examples/StopWatch/StopWatch.cpp file Running() : startTime_( std::time( 0 ) ) { context<StopWatch>(); // <<< added }
it compiles and abort's if i try to start the stopwatch
Yep, that's expected. I quote the comment immediately above the assert: // This assert fails when an attempt is made to access an outer // context from a constructor of a state that is *not* a subtype of // state<>. To correct this, derive from state<> instead of // simple_state<>.
i dont understand why? the state_machine is initialized and even the docs say in its comments that i can use it to get the statemachine http://www.boost.org/doc/libs/1_38_0/libs/statechart/doc/tutorial.html#State...
but im sure i just miss something
Please read: http://www.boost.org/doc/libs/1_38_0/libs/statechart/doc/tutorial.html#Posti... This is about posting events from state constructors but applies to context<> too. Also, please see the preconditions for context documented after "Requires:": http://www.boost.org/doc/libs/1_38_0/libs/statechart/doc/reference.html#cont... HTH, -- Andreas Huber When replying by private email, please remove the words spam and trap from the address shown in the header.
participants (2)
-
Andreas Huber
-
jeti