C++ 关于将函数作为参数-C++;

C++ 关于将函数作为参数-C++;,c++,methods,parameter-passing,C++,Methods,Parameter Passing,假设您有以下方法: double * myMethod(double (*f)(double[]), double *x, int size) { //do something and return } 为什么我不能这样写 double * myMethod(double (*f)(double *), double *x, int size) { //do something and return } 可以将[]替换为*?,但由于数组不支持指针,它们实际上具有相同的签名,因

假设您有以下方法:

double * myMethod(double (*f)(double[]), double *x, int size)
{
    //do something and return
}
为什么我不能这样写

double * myMethod(double (*f)(double *), double *x, int size)
{
    //do something and return
}

可以将[]替换为*?

,但由于数组不支持指针,它们实际上具有相同的签名,因此如果出现错误,是因为您试图重新定义函数:


因为我重命名了第二个函数,所以可以正常工作。

另请参见:了解类似的问题。为什么?有更好的解决方案,更简单,更容易理解和调试。你能提供一些关于编译器的细节,它的版本和你得到的错误信息吗?它对我来说是GCC 4.63的一个切线,但是通常不需要在C++中使用函数指针,除非可能是接口到C代码——它们是从C语言继承的可怕的伪像。相反,请使用
std::function
,或模板和lambda。