开发者

How to give objects to states in a boost::statechart?

I am in the situation where I need to modify a state machine that I did not write. This state machine is written using Boost Statechart. Unfortunately, I find this code impenetrable, and the guy who did write it is on vacation.

The problem is 开发者_运维知识库simple, I think: I have a variable, thing, that I want to use in some of these states. It represents a singular application controller that needs to be informed of things. To what constructor (or whatever) can I give thing, making it available to states of the machine?

The states are declared as per this example:

struct Pumping : sc::state< Pumping, Purifier >
{
  Pumping( my_context ctx ) : my_base( ctx )
  {
    post_event( EvPumpingStarted() );
  }
  // ...
};

P.S. I would love a better title for this question; help appreciated.


It sounds like thing should be passed to the machine constructor? If so, it's probably best to make it a data member of the machine. States can access the machine with the outermost_context() function. So, inside a state you'd write something like outermost_context().get_thing().

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜