如何创建彼此 return 的 C++ 函数?

How can I create C++ functions which return each other?

我想在 C++ 中使用一些函数,其中每个函数代表程序中的一个屏幕。这些函数处理用户交互,并基于此将 return 一个 std::function 到其他函数之一,参数通过 std::bind 绑定,以便可以调用 return 值没有争论。可以通过此过程从任何函数转到任何其他函数, 无需 使用递归 - 主函数将是一个无限循环,只调用 returned 函数及以上。

但我在这里被难住了 - return 类型的定义对于这些函数应该是什么?他们需要 return std::function 不带参数的对象,但这是我所能得到的。 std::function<what_goes_here ()>?

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

一种方法是不 return 调用一个函数。相反,return 一个包含函数的结构。带有函数指针的独立示例:

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

wrapper f1();
wrapper f2();

wrapper f1() { return {f2}; }

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