c ++函数指针'base'

时间:2012-03-25 02:59:53

标签: c++ pointers

我正在将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++

1 个答案:

答案 0 :(得分:1)

一般来说,这是一个坏主意。考虑一下 - 这个函数指针的myfunc是什么?如果你传递abc_function_pointer会发生什么,但它会尝试用三个int来调用它?反之亦然?

在不知道你使用它的情况下,很难建议你应该做什么。通常,您希望将abc_function_pointerxyz_function_pointer之间的公共接口分解出来,因此myfunc始终会调用具有相同类型和接口的函数。您可以插入一个在公共界面与abc_function_pointerxyz_function_pointer之间进行转换的填充函数。