Я читаю книгу Даоци Янга "C ++ и объектно-ориентированные числовые вычисления для ученых и инженеров".У него есть пример, подобный тому, что я показываю ниже, но исключение составляют класс «P», который я определяю, и строка от второй до последней (которая не работает).Мой вопрос: почему мой компилятор генерирует ошибку, когда я предоставляю функцию-член f.integrand?Что я могу сделать, чтобы исправить это?Генерируемые ошибки: C3867, C2440 и C2973.
Вот код:
class P{
public:
double integrand(double x){
return (exp(-x*x));
}
};
template<double F(double)>
double trapezoidal(double a, double b, int n)
{
double h=(b-a)/n;
double sum=F(a)*0.5;
for(int i=1;i<n;i++)
{
sum+=F(a+i*h);
}
sum+=F(b)*0.5;
return (sum*h);
}
double integrand2(double x){
return (exp(-x*x));
}
int main(){
P f;
cout<< trapezoidal<integrand2>(0,1,100)<<endl; // this works
cout<< trapezoidal<f.integrand>(0,1,100)<<endl; // this doesn't work
}