【发布时间】:2014-09-23 13:52:10
【问题描述】:
我是下一个简单的构造函数:
Vector(double x=0, double y=0) : x(x), y(y) {}
void operator+=(const Vector& other) {
this->x += other.x;
this->y += other.y;
}
但是当我这样称呼它时
Vector b();
Vector a(1,1);
并尝试做 a += b; 编译器给了我很多错误,说不存在运算符。但是,当我这样做时: 向量 b(0,0); 或者 向量 b(0); 一切正常(((
【问题讨论】:
-
您为什么认为这样的构造函数可以使用
+=?如果你想要操作符,你必须重载它。这与构造函数无关。但作为旁注,你应该明确这个构造函数,否则简单的数字将隐式转换为向量作为 x 坐标。 -
我有一个接线员。现在我添加它...
-
顺便说一句,
this->不是必需的 -
@RobertMutke 我喜欢在这种情况下使用
this来明确使用了两个对象中的哪一个。 -
@NeilKirk 有点口味问题,但还是应该避免stackoverflow.com/questions/2337540/…
标签: c++ class constructor