Hi Manuel,
The reason I want to extend the backend is that I need to maintain a separate event queue (a job queue).
In reality, "test()" is a function template, so I cannot use virtual functions.
If I implement this function template in the frontend, I need to static_cast to the backend, which I try to avoid struct fsm_ : public boost::msm::front::state_machine_def
{ typedef msmb::state_machine
BackMachine; template <typename EventType> void enqueue_job(const EventType& evt) { job_queue.push( std::bind(&BackMachine::template process_event<EventType>, static_cast
(this), evt) ); }
};
Is there any third option?
Unfortunately not in the general case. But in your use case, maybe. There is already in state_machine<> an enqueue_event() and an execute_queued_events(). Could this help? HTH, Christophe