[英]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.