【发布时间】:2017-10-04 16:57:11
【问题描述】:
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': non-standard syntax;使用“&”创建指向成员的指针? 顺便说一句,我省略了一个类似的 DefInt 成员函数,虽然它与 Bysimpson 几乎相同,但它工作正常并且没有发生错误。我不明白为什么。 我已经把它贴在这里了。
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 << "BySimpson:" << MyInt.BySimpson << endl << endl;应该是cout << "BySimpson:" << MyInt.BySimpson() << endl << endl; -
谢谢。我刚开始学习,我认为如果不需要变量,可以不放 ()。
-
@YimengMa 你为什么会这么想? Read a good book on C++ 而不是试图通过随机编码来学习。
-
其实我正在上一门课程,这是一个家庭作业。我知道这个问题很愚蠢,但我不能删除它,因为它已经得到了回答。我现在怎样才能删除它?我的意思是我明白它对其他人没有帮助,我不希望它出现在我的主页上。
-
@YimengMa 1) 如果是你的作业,源材料应该已经向你解释过,所以你应该已经知道答案。 2)你不能。除非回答您的问题的人将其删除,否则您的问题又回到未回答状态。
标签: c++ visual-studio