처음에는 숙제인데, 나는 무엇을해야하는지 잘 알고 있지만 분명히 뭔가 빠져 있습니다.C++ - 알파벳순 문자열 - '<'연산자 과부하
현재 "Person"이라는 추상 기본 클래스가 있습니다. 그리고 나는 직원, 교수진, 학생 인 사람을 물려받는 3 가지 수업을 가지고 있습니다.
모든 "Person"이름을 성으로 정리하려고합니다. 따라서 '<'연산자를 오버로드해야합니다.
필자는이 함수를 작성했지만 필자는 어디에 넣어야할지 모른다.
기능 :
bool operator < (const Faculty &right)
{
if(getLastName() >= right.getLastName() == 0)
return true;
return false;
}
내가 내 모든 파생 클래스의 헤더 파일에 넣고 경우, 또는 내가 기본 클래스 사람의 가상 함수로 넣어해야합니까? 아니면 둘 다해야합니까? 현재 나는 둘 다하고 있으며 모든 파일에 대해 오류가 발생합니다.
오류 :가
error C2662: 'Person::getLastName' : cannot convert 'this' pointer from
업데이트 : 내가 내 기능을 변경 : 다른 사람의 조언을받은 후
bool operator < (const Person &right)
{
return LastName >= right.getLastName();
}
, 난 단지 "사람이 기능을 배치했다 "가상으로 만들지 않았습니다. 그러나 나는 여전히이 기능을 가리키는 똑같은 정확한 오류 5 개를 얻고있다.
오류 : 전혀 여기에 사람을 도움이 내 "Person.h"에 대한 코드의 경우이
'Person::getLastName' : cannot convert 'this' pointer from 'const Person' to 'Person &'
: 첫째
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;
};
오류 출력이 잘립니다. 전체 오류 메시지를 게시하십시오. – robert
오류는 정말로 질문과 관련이 없습니다. http://msdn.microsoft.com/en-us/library/2s2d2tez%28VS.80%29.aspx'getLastName'은 'const' 멤버 함수 여야합니다. (나는'getLastName'은 당신의'operator <'가 const가 아닌 것에 기초하여 non-const라고 생각합니다). –
@Steve Jessop : 오류를 볼 수 없기 때문에 오류가'const' -ness와 관련이 있는지 알 수 없습니다. 당신의 링크는 단지 그 문제가'const'-ness와 관련이 있음을 암시합니다. – robert