Ich habe Probleme, die richtige operator==
Überladungsfunktion zu bekommen, damit dieser "Find" -Algorithmus funktioniert. Was ich tue, ist ein Objekt 'Kontakt' in einen Parameter für ein anderes Objekt AddressBook
mit seiner Elementfunktion übergeben, um ein Objekt innerhalb eines Vektors zu entfernen. Das heißt natürlich, wenn es in dem Container gefunden wird, den ich eingerichtet habe.C2678 binär '==': Kein Operator gefunden, der einen linken Operanden vom Typ 'Kontakt' verwendet (oder es gibt keine akzeptable Konvertierung)?
void AddressBook::RemoveContact(Contact& delContact)
{
auto begin = container.begin();
auto end = container.end();
auto search = find(begin, end, delContact);
if (search != end)
{
cout << " Entry found to be deleted: " << *search << endl;
}
else
{
cout << " Entry was not found in address book." << endl;
}
}
Hier, wo die Definition mich für den Fehler hat, die gefunden wurde:
template<class _InIt,
class _Ty> inline
_InIt _Find_unchecked1(_InIt _First, _InIt _Last, const _Ty& _Val,
false_type)
{ // find first matching _Val
for (; _First != _Last; ++_First)
if (*_First == _Val)
break;
return (_First);
}
Denken Sie daran, dass ich diesen Fehler habe, bevor ich die folgenden operator==
hinzugefügt. Danach wird es nur noch schlimmer:
class AddressBook : public IAddressBook
{
public:
AddressBook();
void AddContact(Contact& newContact);
void RemoveContact(Contact& delContact);
void DisplayContacts();
//Testing options here...
friend bool operator==(const Contact& lhs, const Contact& rhs)
{
//Working out the appropriate implementation...
}
};
Ich weiß, dass ich etwas tue hier falsch, aber ich bin sicher, dass ich in dem richtigen Objekt bin, dies umzusetzen. Jede Hilfe wäre großartig.
1) Bitte geben (wobei ein impliziter Teil
*this
ist) [MCVE]. 2) Haben Sie 'operator ==' implementiert, der 'Contact' als linken Operanden verwendet (wie die Fehlermeldung suggeriert)? –Ich versuchte, eine Friend-Funktion in AddressBook zu verwenden, um zu sehen, ob das Problem behoben wird, aber das Problem wurde nur noch schlimmer. Ich denke, ich mache Operator == Überladung falsch. Was ich getan habe, war etwas wie: friend ostream & operator == (ostream & os, Contact & c). –
Was 'operator ==' denken Sie, würde verwendet werden, um ein Element zu finden, das gleich einem anderen Element ist? Welche Arten von Objekten sollte es vergleichen? – juanchopanza