Сравнение объектов с использованием if else |Перегрузка оператора - PullRequest
3 голосов
/ 14 июня 2011

Мне нужно compare(>,<,==) два class object на основе различных критериев, объясненных ниже.

class Student
{
    int iRollNumber;
    int iSection;
    int iMarks;
}
  1. Я хочу провести сравнение с iRollNumber, iSection, iMarks (независимо).
  2. Я хочу сделать сравнение с iRollNumber, iSection (Объединенный).
  3. Я хочу сделать сравнение с iMarks, iSection (Объединенный).
  4. ..........

В настоящее время я достигаю этого с помощью GetMethods() и сравниваю их, используя структуру if elseif elseif...

Это приводит к грязному коду везде!

Если яиспользуйте operator overloading Я должен выбрать один способ сравнения.

Пожалуйста, предложите способ сделать это с элегантным кодированием.

Или

Можно ли вызывать перегрузку оператора Полиморфно?

1 Ответ

7 голосов
/ 14 июня 2011

Напишите именованные функции:

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
...