我正在尝试超载operator==
,但编译器抛出以下错误:
‘bool Rationalnumber::operator==(Rationalnumber, Rationalnumber)’ must take exactly one argument
我的一小段代码如下:
bool Rationalnumber::operator==(Rationalnumber l, Rationalnumber r) {
return l.numerator() * r.denominator() == l.denominator() * r.numerator();
}
宣言:
bool operator==( Rationalnumber l, Rationalnumber r );
有谁知道为什么会抛出错误?
If operator==
是一个非静态数据成员,应该只采用一个参数,因为比较将与隐式this
范围:
class Foo {
bool operator==(const Foo& rhs) const { return true;}
};
如果您想使用自由运算符(即不是类的成员),那么您可以指定两个参数:
class Bar { };
bool operator==(const Bar& lhs, const Bar& rhs) { return true;}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)