如何创建彼此 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
。
我想在 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
。