如何创建相互返回的C ++函数?

时间:2015-08-30 12:50:51

标签: c++ function c++11 function-pointers c++14

我希望在C ++中有一些函数,其中每个函数代表程序中的一个屏幕。这些函数处理用户交互,并基于此将返回std::function到其他函数之一,参数通过std::bind绑定,以便可以在不带参数的情况下调用返回值。通过这个过程可以从任何函数到任何其他函数,没有使用递归 - 主函数将是一个无限循环,只是一遍又一遍地调用返回的函数。

但我在这里难倒 - 返回类型的定义应该是针对这些函数的?他们需要返回不带参数的std::function个对象,但这是我能得到的。 std::function<what_goes_here ()>

1 个答案:

答案 0 :(得分:4)

C ++没有任何直接或间接包含自身的函数类型。您需要一些方法来避免类型定义中的递归。

这样做的一种方法是不返回函数。相反,返回包含函数的结构。带有函数指针的自包含示例:

struct wrapper { wrapper (*function)(); };

wrapper f1();
wrapper f2();

wrapper f1() { return {f2}; }

同样的方法也适用于std::function