假設我有幾個成員變量的類:優雅的方式做順序比較(C++)
class MyClass{
std::string a;
int b;
SomeOtherClass c;
// some stuff...
public:
// some other stuff...
};
我想定義關係運算符(operator<
等)先比較a
,但如果a
相等,比較b
,但如果b
相等,則比較c
。 (我們假設SomeOtherClass
定義已經有了關係運算符。)所以我有類似
bool operator==(MyClass param){
return (a == param.a) && (b == param.b) && (c == param.c);
}
bool operator<(MyClass param){
if(a < param.a) return true;
if(a > param.a) return false;
if(b < param.b) return true;
if(b > param.b) return false;
if(c < param.c) return true;
return false;
}
等。有沒有更優雅的方式來做到這一點?這看起來很麻煩,特別是如果有很多成員變量需要比較的話。 (升壓是一個選項。)