Für den Anfang ist dies Hausaufgaben, ich habe ein gutes Verständnis von dem, was ich tun soll, aber ich vermisse offensichtlich etwas.C++ - Alphabetische Strings - '<' Operator Overload
Ich habe derzeit eine abstrakte Basisklasse namens "Person". Und ich habe 3 Klassen, die Person erben, die Personal, Fakultät und Student sind.
Ich versuche, alle "Person" Namen mit Nachnamen zu organisieren. Also muss ich den '<'-Operator überladen.
Ich habe die Funktion geschrieben, aber ich weiß nur nicht, wo ich es hinstellen soll.
Funktion:
bool operator < (const Faculty &right)
{
if(getLastName() >= right.getLastName() == 0)
return true;
return false;
}
Soll ich dies in der Header-Datei für alle meine abgeleiteten Klassen, oder sollte ich es als eine virtuelle Funktion in der Basisklasse Person? Oder soll ich beides machen? Momentan mache ich beides und bekomme für jede Datei einen Fehler.
Fehler:
error C2662: 'Person::getLastName' : cannot convert 'this' pointer from
Update: Ich habe meine Funktion geändert:
bool operator < (const Person &right)
{
return LastName >= right.getLastName();
}
Nachdem ich Ratschläge von anderen Menschen, ich habe diese Funktion nur platziert in „Person "und machte es nicht virtuell. Dennoch bekomme ich immer noch 5 genau die gleichen Fehler, die auf diese Funktion hinweisen.
Fehler:
'Person::getLastName' : cannot convert 'this' pointer from 'const Person' to 'Person &'
Wenn es jemand hilft überhaupt hier ist der Code zu meinem "Person.h":
class Person
{
private:
string FirstName,
LastName,
MiddleName,
SSN;
string FullName;
public:
Person();
Person(string, string, string, string);
Person(string);
string getFirstName();
string getLastName();
string getMiddleName();
string getSSN();
string getFullName();
void setFirstName(string);
void setLastName(string);
void setMiddleName(string);
void setSSN(string);
void setFullName(string);
virtual string getIdentity()
{
return FirstName + " " + MiddleName + " " + LastName + " " + SSN;
}
bool operator < (const Person &right)
{
return LastName >= right.getLastName();
}
virtual string getPurpose() = 0;
};
Ihre Fehlerausgabe ist abgeschnitten. Bitte posten Sie die gesamte Fehlermeldung. – robert
Der Fehler ist nicht wirklich auf Ihre Frage bezogen: http://msdn.microsoft.com/en-us/library/2s2d2tez%28VS.80%29.aspx 'getLastName' sollte eine' const' Member-Funktion sein. (Ich nehme an, dass 'getLastName' nicht-const ist, weil Ihr' operator <'nicht-const ist). –
@Steve Jessop: Sie wissen nicht, dass der Fehler sich auf 'const'-ness bezieht, weil Sie den Fehler nicht sehen können. Ihr Link deutet lediglich darauf hin, dass das Problem sich auf "const" bezieht. – robert