仮免プログラマの軌跡

Android 端末だけで Android アプリを作ったり、技術やガジェットネタをぽつぽつと

スポンサーリンク

「左オペランドを扱う演算子が定義されてません」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;
}

何という初歩的な躓き。
今後、こういうことが無いようにメモしておこう。