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

  • Теперь можно будет написать так:

    // Принять событие Event1 и сбросить автомат в начальное состояние

    MyMachine << Event1 << RestMachine;

    Результатом работы автомата является состояние, в которое он перешел. Для получения текущего состояния напишем функцию и перегрузим оператор вывода в поток класса автомата:

    inline StateType GetCurrentState( void ) const { return CurrentState; }

    template <class SState,

              class SEvent,

              class SFunctor,

              class SUnknownEventStrategy >

    ostream &

    operator<< (ostream &  Stream,

                const SFiniteStateMachine<_SState, _SEvent,

                  _SFunctor,_SUnknownEventStrategy> & Machine )

    {

      return Stream << Machine.GetCurrentState();

    }

    Теперь, если для класса состояния определен оператор вывода в поток, можно написать такой фрагмент кода:

    MyMachine << Event1 << RestMachine;

    cout << MyMachine;  // Эквивалентно cout << MyMachine.GetCurrentState();

    Как уже говорилось, для сокращения времени набора кода и удобочитаемости определены несколько макросов. Они требуют предварительного определения подстановки для типов событий и состояний. Требование связано с тем, что использование вложенных директив препроцессора невозможно. Шаблон же использует Proxy классы, которым также нужны сведения о типах. Поэтому для использования макросов придется сделать так:

    #define FSMStateType   string     // Тип состояния

    #define FSMEventType   int        // Тип события

    . . .

    #undef FSMStateType


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



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




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

       




    Категории:



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




    •