Рефераты | Рефераты по информатике, программированию | Эффективное использование STL и шаблонов | страница реферата 9 | Большая Энциклопедия Рефератов от А до Я
Большая Энциклопедия Рефератов от А до Я
  • Рефераты, курсовые, шпаргалки, сочинения, изложения
  • Дипломы, диссертации, решебники, рассказы, тезисы
  • Конспекты, отчеты, доклады, контрольные работы

  • Стратегию по умолчанию (не вызывать никакую функцию) можно передать в качестве аргумента шаблона. Стратегия вызова функций, скорее всего, будет меняться чаще, чем стратегия действий при неизвестном событии. Поэтому ее имеет смысл поместить в списке аргументов перед стратегией реакции на неизвестное событие:

    template <class SState, class SEvent,

              class SFunctor = SEmptyFunctor<SState,SEvent>,

              class SUnknownEventStrategy = SThrowStrategy<SEvent> >

    class SFiniteStateMachine { . . . };

    Еще один вопрос, связанный с событиями, состоит в том, что событие может быть сгенерировано внутри функции, вызываемой при выходе или входе в состояние. Для обработки таких событий надо соответствующим образом спроектировать функцию, принимающую событие. С учетом таких “внутренних” событий, надо предусмотреть очередь, в которую будут помещаться события. Код, который обрабатывает переходы, должен будет делать это до тех пор, пока очередь не опустеет. В качестве контейнера, подходящего для хранения событий, воспользуемся deque из STL. Поскольку нам нужны только вставка элементов в начало и исключение из конца контейнера, без произвольного доступа, контейнер deque подойдет лучше всего.

    Осталось совсем немного. Иногда нужно привести автомат в исходное состояние. Как и в случае с событиями предусмотрим два варианта: обычная функция и перегруженный operator <<. Для перегруженного operator << нужно определить специальный манипулятор:

    enum SMachineManipulator

    {

      ResetMachine = 0

    };

    . . .

    inline SFiniteStateMachine & operator << ( SMachineManipulator Manipulator )

      {

        if ( Manipulator == ResetMachine )

        return Reset();

        return *this;


    Рекомендуем скачать другие рефераты по теме: налоги и налогообложение, конспект по русскому.



    Предыдущая страница реферата | 3  4  5  6  7  8  9  10  11  12  13 |




    Поделитесь этой записью или добавьте в закладки

       




    Категории:



    Разделы сайта




    •