我试图重载operator==
,但编译器抛出以下错误:
‘bool Rationalnumber::operator==(Rationalnumber, Rationalnumber)’ must take exactly one argument
Run Code Online (Sandbox Code Playgroud)
我的一小段代码如下:
bool Rationalnumber::operator==(Rationalnumber l, Rationalnumber r) {
return l.numerator() * r.denominator() == l.denominator() * r.numerator();
}
Run Code Online (Sandbox Code Playgroud)
宣言:
bool operator==( Rationalnumber l, Rationalnumber r );
Run Code Online (Sandbox Code Playgroud)
有没有人有任何想法,为什么它会抛出错误?
jua*_*nza 18
如果operator==
是非静态数据成员,则应该只接受一个参数,因为比较将是隐式this
参数:
class Foo {
bool operator==(const Foo& rhs) const { return true;}
};
Run Code Online (Sandbox Code Playgroud)
如果要使用自由运算符(即不是类的成员),则可以指定两个参数:
class Bar { };
bool operator==(const Bar& lhs, const Bar& rhs) { return true;}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
24575 次 |
最近记录: |