2011-06-14 4 views
3

나는 아래에 설명 된 다른 기준에 따라 compare(>,<,==) 두 개의 class object에 있어야합니다.if else를 사용한 객체 비교 | 연산자 오버로드

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

'RoolNumber'란 무엇입니까? :피. 그것은'RollNumber' 여야합니다 : D – Nawaz

+0

그건 당신의 문제입니다 (geter 메소드 사용 (나쁜 OO)). –

+0

당신은 무엇을하려고합니까? 아마도 STL 알고리즘이나 컨테이너와 결합 된 몇 가지 보조 펑터 (또는 람다)가 모두 필요하지만 비교를 사용하고자하는 것을 말하지 않는 한 말을 할 수 없습니다. –

답변

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 
+0

상자 밖에서 생각하기. – karlphillip

+0

@Neil : 상자 밖에서 너무 많이 생각하지 마십시오. 두뇌가 쓰러 질 것입니다 : P .... (+1 방법 : D). – Nawaz

+1

@ Nawaz 나는 이보다 더 상자 안에 들어갈 수 있다고 생각하지 않는다! "실제로"C++이 아니기 때문에 참조를 제쳐두고 사용하십시오. –