|
Man.cpp파일에서
ostream& operator<<(ostream& out, const Man& m) {
return out << m.toString();
}
m변수가 const속성을 가지고 넘어왔지요??
const속성을 가진 m에게 toString()멤버함수를 호출하고 있는데,
toString()의 함수정의는 아래와 같이 const속성이 없습니다.
string Man::toString() {
//생략
return newName + newAddress + newEmail + newTel + newAge;
}
다시말해 이것은 마치,
const Man a;
Man* pa;
pa=a;
라는 명령을 수행한 것과 같은데, 이런 문장은 에러입니다. 상수속성을
가진 변수를 일반 포인터변수에게 할당할 수는 없겠지요.
함수정의를 다음과 같이 변경해야합니다.
string Man::toString() const {
//생략
}
또하나의 에러문장도 toString()함수에 존재하는데,
string newAge = string("나이: ") + (age < 0 ? age : "null");
?: 라는 단축if문에서 age는 정수타입이고 "null" 은 char* 타입입니다.
타입이 호환되지 않으므로 에러가 납니다. age도 char* 타입으로 변환시켜주거나
아니면 둘다 string타입으로 변환시켜주어야겠죠.
|