これは、クラスのオブジェクトを比較するときに機能します。
//first number is row, then column, then a value which doesnt get compared.
Element e1 (4, 2, 4);
Element e2 (5, 2, 4);
if (e1 > e2)
cout << "e1 is greater than e2" << endl;
else
cout << "e1 is not greater than e2" << endl;
bool Element::operator > (const Element& e) const
{
return ((this -> row == e.row) && (this -> col > e.col)) || (this -> row > e.row);
}
...しかし、それらをリンクされたリストノードに入れた後に比較するときはそうではありません。
if (curr -> e > head -> e /*<---- STOPS WORKING HERE*/ || curr -> e == head -> e /* <---- THIS == OPERATOR WORKS HOWEVER*/)
{
cout << "inserted befrore not empty head" << endl;
newNode -> next = head;
head = newNode;
}
と比較しようとすると、プログラムの実行が停止curr -> e
しhead -> e
ます。理由はわかりませんが、2 つのノードが等しいかどうかをチェックする別の演算子オーバーロード関数があり、ノードを使用して比較すると機能しているようです。ここでは参考までに。
bool Element::operator == (const Element& e) const
{
return ((this -> row == e.row) &&
(this -> col == e.col));
}
2 つのノードを比較すると、>
演算子のオーバーロード関数によって実行時エラーが発生します。ソリューション?