Для начала, это домашняя работа, я хорошо понимаю, что я должен делать, но я явно что-то упускаю.
В настоящее время у меня есть абстрактный базовый класс под названием "Person". И у меня есть 3 класса, которые наследуют человека, это сотрудники, преподаватели и студенты.
Я пытаюсь упорядочить все имена людей по фамилии. Поэтому я должен перегрузить оператор «<». </p>
У меня написана функция, но я просто не знаю, где ее поставить.
Функция:
bool operator < ( const Faculty &right )
{
if( getLastName() >= right.getLastName() == 0 )
return true;
return false;
}
Должен ли я поместить это в файл заголовка для всех моих производных классов или в виртуальную функцию в базовом классе Person? Или я должен сделать оба. В настоящее время я делаю оба, и я получаю сообщение об ошибке для каждого файла.
ошибка:
error C2662: 'Person::getLastName' : cannot convert 'this' pointer from
Обновление:
Я изменил свою функцию на:
bool operator < ( const Person &right )
{
return LastName >= right.getLastName();
}
Получив совет от других людей, я только поместил эту функцию в «Персона» и сделал ее не виртуальной. И все же я получаю 5 таких же точных ошибок, которые все указывают на эту функцию.
Error
'Person::getLastName' : cannot convert 'this' pointer from 'const Person' to 'Person &'
Если это кому-нибудь поможет, вот код моего "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;
};