0

これは、クラスのオブジェクトを比較するときに機能します。

//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 -> ehead -> eます。理由はわかりませんが、2 つのノードが等しいかどうかをチェックする別の演算子オーバーロード関数があり、ノードを使用して比較すると機能しているようです。ここでは参考までに。

bool Element::operator == (const Element& e) const
{
    return ((this -> row == e.row) &&
            (this -> col == e.col));
}

2 つのノードを比較すると、>演算子のオーバーロード関数によって実行時エラーが発生します。ソリューション?

4

0 に答える 0