+연산자가 어떻게 정의되는지 알고 싶습니다.
글쓴이: rjaechang / 작성시간: 화, 2007/09/25 - 8:28오후
제가 알기로는 A+B라고 하면 A라는 맴버클래스에서(오버로딩을 했을시에) B라는 맴버 클래스를 인자로 받아 +라는 함수에 정의해 놓은 대로 사용하는 걸로 알고있는데요.
그렇다면
main 함수
Result.Size = (P1 + P2);
class정의
operator + (Polynomial& P2); int Add(Polynomial P2);
class 구현부
operator + (Polynomial& P2) { return Add(P2); }
라고 했을때 에러가 안나야 하는거 아닌가요? 그런데
error C2065: 'Add' : undeclared identifier
라고 에러가 납니다. 어디가 문제일까요?...
Forums:
프로토타입과 정의
프로토타입과 정의 모두 반환형이 빠져있으며, 정의의 경우는 클래스 스코프도 빠져있네요...
추가로
op+가 Polinormial의 멤버인 것 같은데
op+에서 int를(Add()의 반환타입) 반환하는게 조금 이상합니다.
보통 해당 클래스의 객체를 반환하죠.
그리고 op+의 인자는 non const일 필요가 없습니다.
또, op+=는 멤버로 선언하지만 op+같은 경우에는 보통 비멤버 함수로 많이 선언합니다.
피연산자 모두가 동등한 타입 변환이 일어나도록 하게끔요.
:)
ADD함수의
결과 값이 int라서 int형으로 반환했구요. 정의에서 클래스 스코프 선언을 안해줘서 에러가 났었네요 ㅋ
(~`0`)~
댓글 달기