「左オペランドを扱う演算子が定義されてません」STL編
スポンサーリンク
STLのmapを使おうと思い、オブジェクトの演算子を多重定義してみたがエラーが発生した。
bool Pair::operator ==(const Pair& r) { if (left == r.left && right == r.right) return true; else return false; }
mapでは "==" と "<" の2つの演算子を使用するのでこれを定義していたが、
関数をconst定義してなかったのが問題だったらしい。
bool Pair::operator ==(const Pair& r) const { if (left == r.left && right == r.right) return true; else return false; }
何という初歩的な躓き。
今後、こういうことが無いようにメモしておこう。