2012-12-16 86 views
-1
bool operator < (Time obj_a, Time obj_b) 
{ 
return ((obj_a.hours<=obj_b.hours || obj_a.minutes<=obj_b.minutes) && 
(obj_a.hours<=obj_b.hours || obj_a.minutes<=obj_b.minutes)); 
} 
bool operator > (Time obj_a, Time obj_b) 
{ 
return (obj_a.hours>=obj_b.hours || obj_a.minutes>=obj_b.minutes); 
} 
bool operator == (Time obj_a, Time obj_b) 
{ 
return (obj_a.hours==obj_b.hours && obj_a.minutes==obj_b.minutes); 
} 

有人能告訴我什麼是錯與這些operators.They都比較小時的時間和minutes.but我沒有得到正確的comparison.I定義了上課時間,其中存儲小時和分鐘。時間分類比較

+0

他們做錯了什麼? – 0x499602D2

+0

當我比較說10:30 <11:20的時間。它給出了錯誤。 – User14229754

+2

'&&'是錯誤的,爲什麼不'返回obj_a.hours * 60 + obj_a.minutes xiaoyi

回答

2

這段代碼有很多錯誤。首先,您將<比較爲<=比較,其中(如果其餘邏輯正確)將意味着相同的時間將比較<>,具體取決於比較例程的參數順序。

然後,

((obj_a.hours<=obj_b.hours || obj_a.minutes<=obj_b.minutes) && 
(obj_a.hours<=obj_b.hours || obj_a.minutes<=obj_b.minutes)) 

執行完全相同的比較兩次在&&,所以它實際上做只是

obj_a.hours<=obj_b.hours || obj_a.minutes<=obj_b.minutes 

因爲它要要麼小時這不起作用,分鐘爲<=。這意味着11:30 < = 10:40,因爲30 <= 40

解決這個問題的最簡單方法是減少時間對象的比較,以僅在分鐘進行比較,例如,

a.hours * 60 + a.minutes < b.hours * 60 + b.minutes 
+0

我現在很尷尬,爲什麼我甚至會問這個問題,感謝很多幫助我愚蠢的大腦。 – User14229754