无法解决语法错误

时间:2014-09-25 15:36:02

标签: c++ oop compiler-errors

有什么问题?请告诉我。 责备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;};
}

我会非常感谢你的帮助,因为我无法理解错误的原因

1 个答案:

答案 0 :(得分:4)

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

修复要么是为了公开,要么使自由函数为friend。或者更好,正如Mike所说,使用你的公共界面。