хотел бы получить нормальный FSM с минимумом аллокаций и гибкой конфигурацией.
http://www.vishalchovatiya.com/state-design-pattern-in-modern-cpp/
Прочитал эту статью, попробовал вариант с std:: variant, но вышло громоздко и не удобно, идея понравилась, но хочется что-то более удобное.
Вообщем, вопрос. Какие варианты есть для FSM есть в С++ ?
https://youtu.be/AnOPvP7e7cw Мне очень понравился доклад @zmij_r на эту тему, библиотека вроде есть на гитхабе, не знаю насколько живая, правда (Сорри за пинг)
https://youtu.be/S5hZdXRPBRE Такое мне зашло.
Все нормально, спасибо огромное, что отозвались!
О, Павел! Смотрел его по корутинам
Круто, но блин, typeid()))
Я про то, что в примерах активно используется RTTI
Кстати, смотрел этот доклад, но пользоваться такой стейт машиной на шаблонах ведь неудобно. В докладе у Павла был метод getDoor(), который каждый раз при вызове этого метода создавал стейт машину и возвращал её. Т.е. на каждый вызов getDoor() создавался новый объект, у которого currentState будет всегда первым, что вообще неверно. Стейт машину нужно хранить в объекте, состояния которого хотим «переключать», а инициализировать её возможно только в ашнике, т.к. все лямбды-обработчики - шаблонные параметры машины, от которых она наследуется. А если логика нетривиальная, то ашник будет очень жирным
Обсуждают сегодня