いわゆるあれ
keyとvalueを持ち、keyでsortができるクラス、構造体
template < typename TYPE_A, typename TYPE_B> class Class{ public: TYPE_A key; TYPE_B value; Class(TYPE_A key, TYPE_B value) :key(key), value(value) {}; bool operator< (const Class & right)const { return key < right.key; } };
参考
http://www.hiramine.com/programming/c_cpp/operator.html
比較演算(「==」「!=」「<」「>」)
結論
bool CPoint3d::operator == ( const CPoint3d& b ) const;
bool CPoint3d::operator != ( const CPoint3d& b ) const;
bool CPoint3d::operator < ( const CPoint3d& b ) const;
bool CPoint3d::operator > ( const CPoint3d& b ) const;考察(他の選択肢)
①戻り値の型を void にする。
void CPoint3d::operator == ( const CPoint3d& b ) const;
関数が仕事をしなくなる。
②戻り値の型に const をつける。
const bool CPoint3d::operator == ( const CPoint3d& b ) const;
constをつけても、つけなくても違いがない。
http://homepage2.nifty.com/well/const.html
メンバ関数 GetiSize() では、メンバ変数を読んでいるだけで、変更はしていないので const なオブジェクトで使われても問題ないように思われるのですが、コンパイラは GetiSize() がメンバ変数を変更しているかもしれないと判断し、コンパイルエラーとなってしまいます。そこで、これを避けるには、次のように、メンバ関数の定義に const キーワードをつけて、コンパイラに「この関数はメンバ変数を変更しない」ということを知らせるようにします。
なんでobjectがconstなのかは不明だが、比較演算子の戻り値には上
のようにconstを付けないとコンパイルできない。