手始めに、これは宿題です。私は自分が何をすべきかをよく理解していますが、明らかに何かが欠けています。
現在、「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;
};