Ich versuche, den Operator = auf der Linie 9 in dem folgenden Code zu überlasten:Überlastung = Operator, kann sie nicht an der Arbeit
void searchContact(vector<Person> &people){
string searchTerm;
vector<Person>::iterator it;
cout << endl;
cout << "Enter search term: ";
getline(cin, searchTerm);
it = find(people.begin(), people.end(), searchTerm);
if (it != people.end()){
cout << "Element found in: " << *it << '\n';
}else{
cout << "Element not found\n";
}
}
Mein Ansatz ist dies:
int data;
Person& operator=(Person& a) { return a; }
Person& operator=(int a) {
data = a;
return *this;
}
I bekomme ich diesen Fehler:
class.cpp:129:30: error: ‘Person& operator=(Person&)’ must be a nonstatic member function
Person& operator=(Person& a) { return a; }
^
class.cpp:130:26: error: ‘Person& operator=(int)’ must be a nonstatic member function
Person& operator=(int a) {
Was ist falsch mit meinem Ansatz, oder mache ich alles falsch von Anfang an?
Sind Sie sicher, dass Sie eine * Zuordnung * Operator erstellen? Und kein Vergleich-für-gleich '== Operator? –
Für die Fehler, die Sie erhalten, versuchen Sie bitte, ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) zu erstellen, um uns zu zeigen. –
Schließlich empfehle ich Ihnen, [diese Referenz der kanonischen Implementierungen von überladenen Operatoren] (http://en.cppreference.com/w/cpp/language/operators#Canonical_implementations) zu lesen, weil Ihr Kopierzuweisungsoperator falsch ist (es tut nicht Kopiere nichts für Anfänger. –