-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
doSomething 함수에서
21.02.07 23:04 작성 조회수 177
1
Fraction doSomething() {
Fraction temp(2, 1);
return temp;
}
이렇게 만드셨는데 저는
Fraction doSomething() {
return Fraction temp(2, 1);
}
이렇게 하려고 하니까 type name is not allowed 에러가 뜨더라구요
그런데 <<생성자 오버로딩에서
friend std::ostream& operator << (std::ostream& out, const Fraction& f) {
return out << f._numerator << " / " << f._denominator << endl;
}
이 함수는 교수님처럼 안하고 리턴에 한번에 이렇게 써줘도 문제가 없던데 앞에서는 왜 에러가 나고 여기선 문제가 없을까요?
답변을 작성해보세요.
3
안소
2021.02.08
안녕하세요.
질문자님은 위와 같은 형태로 리턴하려고 하신 것이나 마찬가지입니다.
리턴문 안에서는 L-value 변수를 새롭게 정의할 수 없습니다.
따라서 리턴문안에서 Fraction temp 를 새롭게 만드시고 이를 리턴하려고 하시면 안됩니다.
이렇게 미리 a를 정의 해주시고 그 a를 리턴하셔야 해요!
아래 연산자 오버로딩도 그렇고 맨 위의 코드가 문제 없었던 이유는 기존에 이미 정의되어 있는 것을 리턴하는 것이라 문제가 없기 때문입니다.
답변 1