我正在尝试实现比较器功能,并且来自JavaScript背景,试图像这样将它们链接起来:
int MyClass::compare(MyClass & other) {
return MyClass.x.compare(other.x) || MyClass.y.compare(other.y);
}
也就是说,比较对象的x
值,如果相等,则比较对象的y
值。
我立即意识到这是行不通的,因为c ++中的OR函数返回的是布尔值,而不是最后一个求值。
除了从字面上编写if语句外,例如
int result = MyClass.x.compare(other.x);
if (result) {
return result;
}
result = MyClass.y.compare(other.y);
return result;
,有一种简洁的方法可以编写此表达式吗?