
Hi, I am implementing a fsm for a kind of a project class, which tracks certain changes like adding special files or starting a computation. To keep the interface as small/clean as possible all interactions with the fsm should be soley processed by the process_event method. But seemingl I have to declare transition actions public in an outer state to make them available for inner state reactions/transitions. Is there any nice way to avoid this and to keep transition actions separated from the public interface? (Declaring *all* inner states which need access to be friend seems too ugly to me...) A small code snippet to demonstrate my issue: In Project.h: struct Idle; struct Project : sc::state_machine< Project, Idle > { public: //.... void solve(const EvSolve &); //... }; //... struct Idle : sc::simple_state< Idle, Project, mpl::list<GeoState, SolverState> > { typedef mpl::list< sc::custom_reaction< EvCompile >, sc::custom_reaction< EvSolve > > reactions; sc::result react(const EvCompile &); sc::result react(const EvSolve &); }; In Project.h: sc::result Idle::react(const EvSolve & ev) { //... return transit<Solve>(&Project::solve, ev); } Regards, Andre