对于初学者来说,这是家庭作业,我很清楚我应该做什么,但我显然错过了一些东西。
我目前有一个名为“Person”的抽象基类。我有 3 个继承人的班级,他们是员工、教师和学生。
我正在尝试按姓氏组织所有“人”的名字。所以我必须重载'<'运算符。
我已经编写了函数,但我只是不知道把它放在哪里。
功能:
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();
}
在听取了其他人的建议后,我只将这个功能放在了“Person”中,并使其不是虚拟的。然而,我仍然得到 5 个完全相同的错误,这些错误都指向这个函数。
错误:
'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;
};