class DefInt
{
private:
double a;
double b;
double (*f)(double x);
int N;
public:
DefInt(double c, double d, double (*g)(double y))
{
a = c;
b = d;
f = g;
}
double BySimpson()
{
double sum = f(a) + 4 * f((a + b)/2) + f(b);
return sum * (b - a)/3;
}
};
double g(double y)
{
double sum = 1 - y * y + y * y * y;
return sum;
}
int main()
{
int c = 1;
int d = 2;
double y;
DefInt MyInt(c, d, g);
cout << "BySimpson:" << MyInt.BySimpson << endl << endl;
system("pause");
return 0;
}
为什么会出现一个错误说“DefInt :: BySimpson”:非标准语法;使用'&'来创建一个指向成员的指针? 顺便说一句,我ommited一个类似的DefInt成员函数,虽然它几乎相同的Bysimpson,它工作正常,没有错误发生。我不懂为什么。 我已经在这里了解它。VS2017“非标准语法;使用‘&’创建一个指向成员t”
double ByTrapzold(int n)
{
N = n;
double sum = f(a + (b - a)/N);
for (int i = 2; i <= N; i++)
{
sum = sum + 2 * f(a + (b - a) * i/N);
}
sum = sum + f(a + (b - a) * (N + 1)/N);
return sum * (b - a)/(2 * N);
}
谢谢。
你错过了一组'()'。 'cout <<“By Simpson:”<< MyInt.BySimpson << endl << endl;'应该是'cout <<“bySimpson:”<< MyInt.BySimpson()<< endl << endl;' – NathanOliver
谢谢。我刚开始学习,我认为如果不需要变量,就不要放一个()。 –
@YimengMa你为什么会这么想? [阅读一本关于C++的好书](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list),而不是试图通过随机编码进行学习。 –