gpt4 book ai didi

C++ 函数指针 'base'

转载 作者:行者123 更新时间:2023-11-28 08:07:57 26 4
gpt4 key购买 nike

我正在将 Fortran 代码转换为 C++,并希望为函数指针找到一个正确的选项。

fortran 代码是:对于两种不同的情况,它将两种不同的函数指针传递给另一个函数。这些函数指针有不同的接口(interface)。在 C++ 中,我需要指定函数指针的接口(interface),因此并不简单。有人可以建议,如果是 C++ 仿函数或其他东西,那会有用吗?我希望我可以使用“void(函数)指针”之类的东西,然后再使用“cast”,但我真的不知道。提前致谢。

编辑:fortran 中的最小示例

中文

if(option1) then
call myfunc( abc_function_pointer,otherarguments)
else
call myfunc( xyz_function_pointer, otherarguments)
endif

其中,这些函数是(在 C++ 中)

void (*abc_function_pointer)(int, float) //in c++
void (*xyz_function_pointer)(int, int, int) //in c++

最佳答案

一般来说,这是个坏主意。考虑一下 - myfunc 将如何处理这个函数指针?如果您将 abc_function_pointer 传递给它,但它试图用三个 int 调用它,会发生什么情况?还是相反?

在不知道您使用它做什么的情况下,很难建议您应该做什么。通常,您可能希望分解出 abc_function_pointerxyz_function_pointer 之间的公共(public)接口(interface),因此 myfunc 总是调用具有相同类型和接口(interface)的函数。您可以插入一个 shim 函数,在通用接口(interface)和 abc_function_pointerxyz_function_pointer 的接口(interface)之间进行转换。

关于C++ 函数指针 'base',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9857592/

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