我正在尝试比较对象数组中的两个不同对象,如果我不使用数组它可以正常工作.将对象放在数组中会导致重载函数甚至不被调用("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";
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
list[0] > list[1]比较两个指针,它们不使用重载运算符.要调用重载运算符,您需要*list[0] > *list[1].
顺便说一句,签名operator>应该是bool operator>(const myClass& a, const myClass& b).
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |