<分区>
在 C 中,我如何声明一个函数,该函数返回一个函数,该函数返回一个函数等。 即,我想要这样的东西
typedef A (*A)();
A a = ...
a()()()()();
我想实现以下 C++ 行为:
struct A { A operator()() { return A(); } };
A a;
a()()()()();
<分区>
在 C 中,我如何声明一个函数,该函数返回一个函数,该函数返回一个函数等。 即,我想要这样的东西
typedef A (*A)();
A a = ...
a()()()()();
我想实现以下 C++ 行为:
struct A { A operator()() { return A(); } };
A a;
a()()()()();
最佳答案
您不能在 C
中返回一个函数 - 您返回一个指向函数的指针。如果您打算定义一个函数,该函数返回一个指向函数的指针,该函数又返回一个指向函数的指针等等,那么您可以使用 typedef
来实现它。
typedef int (*f)(int);
typedef f (*g)(float);
typedef g (*h)(char);
// and so on
但是,如果您打算定义一个返回指向其自身类型的函数的指针的函数,那么您不能这样做,因为您不能在 C
中定义递归类型。详情请看这里 - Function Returning Itself
关于c - 返回指向返回相同类型的函数的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22463628/