【发布时间】:2014-05-19 12:12:17
【问题描述】:
我正在尝试实现状态机。状态由 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 ;
^
有没有办法实现这种行为?
环境:win7、codelite、mingw 4.8.1
【问题讨论】:
-
你用 -std=c++11 或 -std=gnu++11 编译了你的程序,对吧?
-
g++ -c "C:/work/tests/tests/main.cpp" -std=c++11 -g -O0 -Wall -o ./Debug/main.o -I。 -I.
-
请提供更具描述性的标题。照原样,在搜索结果中找到此内容的人将无法判断是否值得一试,因为此标题可以描述任何内容。
-
@R。马蒂尼奥费尔南德斯:你现在怎么看?有什么建议吗?
-
酷,谢谢你的表演!有一个 +1。