问题描述
#include <iostream>
#include <vector>
struct Result
{
double A;
double B;
};
class Regression
{
struct Point
{
double x;
double y;
};
std::vector<Point> points{};
public:
void add(double x,double y)
{
Point const p{x,y};
points.push_back(p);
}
int N = points.size();
double sum_x(std::vector<Point> points)
{
double sum = 0;
for (Point n : points){
sum = sum + n.x;
}
return sum;
}
//and so on for sum_y,sum_xy,sum_x2 (to shorten the question)
double sum_x = sum_x(points);
double sum_y = sum_y(points);
double sum_xy = sum_xy(points);
double sum_x2 = sum_x2(points);
Result fit() const
{
double const d = (N * sum_x2 - sum_x * sum_x);
double const a = (sum_y * sum_x2 - sum_x * sum_xy) / d;
double const b = (N * sum_xy - sum_x * sum_y) / d;
return {a,b};
}
};
嗨,我无法使这段代码工作,对于函数 fit() 中的每个 sum_x、sum_y 等,错误指出“表达式必须具有算术或无作用域枚举类型”。 我对 C++ 真的很陌生,所以如果这是一个微不足道的错误,我深表歉意。 谢谢
解决方法
编译器认为 sum_x is etc. are function,所以用不同的方式命名变量,以便它们可以区分