2012-05-18 89 views
0

我目前正在努力工作的賦值作品,其中包含幾個自定義數據類型。我遇到了一個問題,列表中抱怨說我試圖從相同數據類型的列表中刪除自定義數據類型。從自定義數據類型列表中刪除C2678錯誤

Error 3 error C2678: binary '==' : no operator found which takes a left-hand operand of type 'customer' (or there is no acceptable conversion) c:\program files (x86)\microsoft visual studio 10.0\vc\include\list 1194 1 Assignment 1 - Video Store MIS 

相關的代碼是在這裏:

void customerCollection::removeCustomer(customer person) 
{ 
customers.remove(person); 
} 

和自定義數據類型確實有定義的==操作符:

bool customer::operator==(customer &other) const 
{ 
return (l_fullName == other.getName()) && 
     (l_contactNumber == other.getNumber()) && 
     (l_password == other.getPassword()) && 
     (l_username == other.getUsername()); 
} 

有什麼理由,該列表類型可以」 t看到重載的操作符?

customerCollection和客戶數據類型是程序的必需部分。

[編輯]重載操作符在頭文件中定義爲public。

+0

您不需要在其他''Customer'上調用'get'。使用'l_fullName == other.l_fullName'等。 –

回答

3
bool customer::operator==(customer &other) const 

嘗試改變,要

bool customer::operator==(const customer &other) const 

這是可能的customers收集的代碼通過一個常量限定客戶平等運營商。至少,它更習慣(合乎邏輯)。

+0

啊我看到了,我必須通過並使所有的get函數都是const。我曾嘗試過,並沒有奏效。感謝您的幫助! – Stickiler

0

我傾向於說的原因是,該參數不const

bool customer::operator==(const customer& other) const 

取決於remove是如何定義的。

相關問題