使用向量的线回归

问题描述

#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,所以用不同的方式命名变量,以便它们可以区分