gpt4 book ai didi

c++ - 在没有 typedef 的情况下使用指向函数指针的指针?

转载 作者:行者123 更新时间:2023-11-30 18:42:03 26 4
gpt4 key购买 nike

我正在尝试使用类型为 double* (*func)(double*, double) 的函数指针集合,其长度在运行时确定。我可以使用 typedef by

来做到这一点
typedef double* (*func)(double*, double);

...

func* functions = new func[5];

我知道 typedef 是执行此操作的“正确”方法,但我想知道是否有一种方法可以在不使用 typedef 的情况下执行此操作。我能找到的关于此类事物的所有信息仅使用函数指针的数组,而不是指向函数指针的指针。我认为是贴牌

double* (**functions)(double*, double);

是正确的,但我似乎无法弄清楚如何使用new来初始化这样的东西。

最佳答案

double *(**functions)(double *, double) = new (double *(*[5])(double *, double));

要在 new 表达式中使用抽象函数类型(或指向函数的指针),您需要将抽象类型放在括号中 - 从 C++ 规范的 5.3.4 开始:

new-expression:
        
::opt new new-placementopt new-type-id new-initializeropt
        
::opt new new-placementopt ( type-id ) new-initializeropt

new-type-id 无法表达函数类型。

如果您尝试自动生成(或混淆)代码,了解 C++ 语法规范的详细信息很有用,但对于您希望人类阅读的真实代码,您应该只使用 typedef。

关于c++ - 在没有 typedef 的情况下使用指向函数指针的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18551894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com