いくつかのメンバー変数を持つクラスがあるとします。
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;
}
等々。これを行うためのよりエレガントな方法はありますか?特に比較するメンバー変数が多数ある場合は、かなり面倒に思えます。(ブーストはオプションです。)