根据不同的标准,我必须compare(>,<,==)
两个class object
,如下所述。
class Student
{
int iRollNumber;
int iSection;
int iMarks;
}
iRollNumber, iSection, iMarks
(独立)进行比较。iRollNumber, iSection
(合并)进行比较。iMarks, iSection
(合并)进行比较。目前,我使用GetMethods()
实现此目标,并使用if elseif elseif..
结构进行比较。
这导致到处乱码!
如果我使用operator overloading
,我必须决定一种比较方式。
请使用优雅的编码建议一种方法。
或者
是否可以多态调用运算符重载?
答案 0 :(得分:7)
编写命名函数:
int CompareR( const Student & a, const Student & b );
int CompareS( const Student & a, const Student & b );
int CompareM( const Student & a, const Student & b );
int CompareRS( const Student & a, const Student & b );
int CompareMS( const Student & a, const Student & b );
虽然需要在课堂上进行这么多不同类型的比较有点不寻常 - 你通常只需要一个或两个。函数应返回与strcmp()相同的值:
< returns -1
== returns 0
> returns 1