无法解决语法错误

Cannot solve syntax errors

本文关键字:错误 语法 解决      更新时间:2023-10-16

怎么了?请告诉我。归咎于x、语法和许多其他方面。

#include <iostream>
using namespace std;
class point {
    double x;
    double y;
public:
    point(x = 0.0, y = 0.0) : x(x), y(y) {}
    double getx() { return x; }
    double gety() { return y; }
    void setx(double v) { x = v; }
    void sety(double v) { y = v; }
    // private:
};
ostream& operator<<(ostream& out, point& p) {
    out << "( " << p.getx() << ", " << p.gety() << " )";
    return out;
}
point operator+(point& p1, point& p2) {
    point sum = {p1.x + p2.x, p1.y + p2.y};
    return sum;
}
int main() {
    // x = point()  {x=y=1.2;};
}

我会非常感谢你的帮助,因为我真的不明白出了什么问题

point(x=0.0, y = 0.0):x(x),y(y){}

x是什么类型的?您需要指定它,例如

point(double x=0.0, double y = 0.0):x(x),y(y){}

查看编译器的错误,它们的存在是有原因的

编辑:我猜你的下一个错误会更痛苦,所以我会在这里解释:你也试图在你的运营商+免费功能中访问私人内容:

point operator+ (point &p1, point &p2){
      point sum = {p1.x + p2.x, p1.y + p2.y}; // x and y are private!
      return sum;
      }

自:

class point
{     // default here is "private:"
      double x;
      double y;
  public:
      // after this point everything will be public

解决办法是要么将这些功能公开,要么将免费功能作为好友。或者,正如Mike所指出的,最好使用您的公共界面。