У меня есть метод во внешнем конечном автомате, который устанавливает объект контекста (TrajectoryManagerComponent* m_comComponent). К этому объекту должен быть доступен внутренний конечный автомат, чтобы действия внутри подсостояний могли вызывать его методы.
Проблема: я не могу передать контекст непосредственно конструктору. внутреннего автомата, потому что я не создаю экземпляр внутреннего автомата напрямую — им управляет boost::msm. Вот упрощенная версия моего текущего кода:
Код: Выделить всё
struct ComponentStateMachine_ : public msm::front::state_machine_def
{
public:
TrajectoryManagerComponent* m_component;
void link_component(hyro::guidance::TrajectoryManagerComponent* component) { m_component = component; }
struct Operating_ : public msm::front::state_machine_def
{
template
void on_entry(Event const&, SM& fsm)
{
m_logger->info("Accessing component, we might now use its methods. Component is {}", **fsm.m_component**);
Есть ли способ добиться этого в Boost.MSM, или существует альтернативный шаблон, который позволил бы мне получить доступ к контексту из внутреннего автомата?
Подробнее здесь: https://stackoverflow.com/questions/791 ... te-machine