Итак, у меня есть функция, которая называется Ромберга, которая принимает функцию в качестве первого параметра:В C++, как вы можете передать метод объекта в качестве параметра функции?
int Romberg(double (*f)(double), ...);
При выполнении, он применяет переданную функцию к нескольким значениям.
В классе, я определил следующие методы:
double Funktion::q(double x){
return(sqrt(1.0+fd(x)*fd(x)));
};
void Funktion::compute_bogen(){
Romberg(q, ...);
};
Где fd
это еще один метод из того же класса. Это, однако, не работает! Я попытался изменить код следующим образом, который заканчивается успешным передачей метода функции Ромберга; но тогда он не применять переданную функцию:
int Romberg(double (Funktion::* &f)(double), ...);
void Funktion::compute_bogen(){
Romberg(&Funktion::q, ...);
};
Я получаю следующее сообщение об ошибке:
error C2064: term does not evaluate to a function taking 1 arguments
Прямо сейчас, я не вижу, как сделать эту работу, не выбрасывая всю систему класса Я построил.
Проблема заключается в том, что вы должны передать экземпляр для вызова его. http://blog.slaks.net/2011/06/delegates-vs-function-pointers-part-2-c.html/ – SLaks
Вы пытались использовать Romberg как функцию друга? –
Можете ли вы сделать свою функцию 'f' статической или свободной функцией? – Andrei