// Базовый класс для состояний автомата A0
class S {
protected:
    // Указатель на объект данных
    MainData *pMainData;
    // Входные переменные
    bool x1(){
        return ...
    }
...
    bool xN(){
        return ...
    }
    // Выходные воздействия
    void z0(){
        ...
    }
    ...
    void zK(){
        ...
    }
public:
    // Конструктор
    S(MainData *pMainData) :pMainData(pMainData){
    }
    // Метод, реализующий действия для состояния
    virtual S* execute()=0;
};