Я пытаюсь реализовать государственную машину. Состояние представлено функцией типа callback_t
: callback_t(int&)
, которая возвращает функцию того же типа.
Я не знаю, как реализовать его, поскольку функция рекурсивного ввода не допускается.
Вот что я пытался (как игрушка):
#include <stdio.h>
#include <functional>
typedef std::function< callback_t(int &) > callback_t ;
callback_t f1(int & i)
{
i++;
return f1;
}
callback_t f0(int & i)
{
if(i==0) i++;
return f1;
}
callback_t start(int & i)
{
i=0;
return f0;
}
int main(int argc, char **argv)
{
callback_t begin = start;
int i=0;
while(i<100)
begin = begin(i);
printf("hello world\n");
return 0;
}
Ошибка:
C:/work/tests/tests/main.cpp:4:41: error: 'callback_t' was not declared in this scope
typedef std::function< callback_t(int &) > callback_t ;
^
Есть ли способ реализовать такое поведение?
Env: win7, codelite, mingw 4.8.1