bool operator == (const MyString& left, const MyString& right)
{
if(left.value == right.value)
return true;
else return false;
}
bool operator != (const MyString& left, const MyString& right)
{
if(left == right)
return false;
else
return true;
}
bool operator < (const MyString& left, const MyString& right)
{
if(strcmp(left.value, right.value) == -1)
return true;
else
return false;
}
bool operator > (const MyString& left, const MyString& right)
{
if(strcmp(left.value, right.value) == 1)
return true;
else
return false;
}
bool operator <= (const MyString& left, const MyString& right)
{
if(strcmp(left.value, right.value) == -1 || strcmp(left.value, right.value) == 0)
return true;
else
return false;
}
bool operator >= (const MyString& left, const MyString& right)
{
if(strcmp(left.value, right.value) == 1 || strcmp(left.value, right.value) == 0)
return true;
else
return false;
}
這些是我爲MyString類實現的比較運算符,但它們失敗了我的教授給我的測試程序,可能會使用某些方向。問題是什麼?爲MyString類重載比較運算符
什麼是* *問題? – Puppy 2012-03-28 05:16:35
'strcmp'函數可以返回零,_negative_或_positive_。它不具有「-1」或「1」的特徵。 – 2012-03-28 05:33:47
很好的答案,但我不認爲'operator =='正在做你想做的事情。你在比較指針,而不是數值。試試這個:'return!strcmp(left.value,right.value);' – parkovski 2012-03-28 05:43:43