2012-05-04 2 views
0

C++ Предположим, у вас есть следующий метод:Любопытство о передаче функции в качестве параметра -

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 
} 

заменяет [] на *?

+0

оба они работают – nims

+0

Какие ошибки вы получаете? – TemplateRex

+0

Почему? Есть лучшие решения, менее сложные и понятные и отлаживаемые. –

ответ

1

Вы можете, но так как массивы принизить указатели, они на самом деле имеют ту же сигнатуру, так что если вы получаете сообщение об ошибке, это потому, что вы пытаетесь переопределить функцию:

http://ideone.com/E1Z7B работает, потому что я переименовал вторая функция.

+0

См. Также: http://stackoverflow.com/questions/5192068/c-char-argv-vs-char-argv для аналогичного вопроса. – TemplateRex