簡體   English   中英

用類數組重載>運算符

[英]Overloading the > operator with an array of a class

我正在嘗試比較對象數組中的兩個不同對象,如果我不使用數組,它將很好地工作。 將對象放在數組中會導致甚至不會調用重載函數(“ yes”不會被打印)。 我不確定我是在重載函數中使用了錯誤的參數還是什么。

 #include <iostream>

using namespace std;

class myClass {
public:
    myClass(int num) 
    { 
        value = num;
    }

    friend bool operator>(myClass& a, myClass& b) 
    { 
        cout << "yes" << endl; 
        return a.value > b.value; 
    }

private:
    int value;
};

int main()
{
    myClass *list[5];

    list[0] = new myClass(15);
    list[1] = new myClass(4);


    if (list[0] > list[1])
        cout << "yes";
    else
        cout << "no";
}

謝謝。

list[0] > list[1]正在比較兩個指針,它們不使用您的重載運算符。 要調用重載運算符,您需要*list[0] > *list[1]

順便說一句, operator>的簽名應為bool operator>(const myClass& a, const myClass& b)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM