我正在将fortran代码转换为C ++,并希望为函数指针找到正确的选项。
fortran代码是:对于两种不同的情况,它将两种不同类型的函数指针传递给另一个函数。这些函数指针具有不同的接口。在C ++中,我需要指定函数指针的接口,因此它并不简单。有人建议,如果是C ++仿函数或其他什么,那会有用吗?我希望我可以使用'void(function)pointer'然后'cast'之类的东西,但我真的不知道。提前谢谢。
编辑:fortran的最小例子
的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++
答案 0 :(得分:1)
一般来说,这是一个坏主意。考虑一下 - 这个函数指针的myfunc
是什么?如果你传递abc_function_pointer
会发生什么,但它会尝试用三个int
来调用它?反之亦然?
在不知道你使用它的情况下,很难建议你应该做什么。通常,您希望将abc_function_pointer
和xyz_function_pointer
之间的公共接口分解出来,因此myfunc
始终会调用具有相同类型和接口的函数。您可以插入一个在公共界面与abc_function_pointer
或xyz_function_pointer
之间进行转换的填充函数。