Можно ли сделать что-то вроде этого? Без использования статических функций или сделать chordL
членом power
. Я действительно не понимаю, как это сделать, разве это невозможно?Функция указателя функции, функция пропуска в качестве аргумента функции нечлена
class power {
double b;
public:
void set(double par){b=par}
double fun(double arg){
return b*pow(arg,2);
}
double execute(double par1, double par2);
};
double chordL(power::*fm, double p1, double p2){ // it's not a member function
return sqrt(pow(fm(p1)-fm(p2),2)+pow(p1-p2,2)); // clearly doesn't work!
}
double power::execute(double par1, double par2){ // it's a member function
double (power::*g)(double);
g=&power::fun;
return chordL(g,par1,par2);
}
Ok! Поэтому я должен передать tp, который является указателем класса. Но как я могу это сделать в выполнении функции? Потому что я хочу использовать chordL в исполнении, который является членом власти! –
Предполагается, что 'T ::' относится к 'power'? Если это так, вам нужно передать 'this' вместе с chordL. –
Да, извините! Как передать 'this'? Как это может быть функция выполнения? Вот в чем я не понимаю! –