Образовательный портал Claw.ru
Всё для учебы, работы и отдыха
» Шпаргалки, рефераты, курсовые
» Сочинения и изложения
» Конспекты и лекции
» Энциклопедии

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

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 |


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

   



Рефераты от А до Я


Полезные заметки

  •