在三个对象之间使用操作符



我想在3个对象之间使用-运算符,但是我不能。

错误:'A A::operator-(A, A)'必须接受零或一个参数

我不知道该怎么办。

class A
{
private:
float x,y;
public:
void set(int a,int b){
x=a;
y=b;
}
void show(){
cout<<"x = "<<x<<" y = "<<y<<endl;
}

A() {}
A operator -(A &obj1){
A temp;
temp.x= x - obj1.x;
temp.y= y - obj1.y;
return temp;
}
};
A A::operator -(A obj1, A obj2);
int main() {
A ob1,ob2,ob,result;
ob1.set(5,7);
ob2.set(10,7);
ob.set(4,9);
result = ob - ob2 -ob1;
ob.show();

return 0;
}

有两种方法重载类的操作符:

class Foo {
public:
Foo operator -(const Foo &rhs) const { ... }
Foo operator +(const Foo &rhs) const;
};
Foo Foo::operator +(const Foo &rhs) const {
...
}

class Foo { ... };
Foo operator -(const Foo &lhs, const Foo &rhs) { ... }

第一个是在类内部将操作符重载为类的函数。它this操作员的左手边,这样你就可以只指定右边作为论点。

第二个重载类外部的通用操作符。它有两个参数,左边和右边。它不是类的成员,不能访问私有部分,除非你把它加为好友。

你把这两种风格混在一起了,这就是错误想告诉你的。

你不需要实现任何东西来使a - b - c工作,因为编译器会将其转换为temp = a - b; temp - c;

相关内容

  • 没有找到相关文章

最新更新