+연산자가 어떻게 정의되는지 알고 싶습니다.

rjaechang의 이미지

제가 알기로는 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
라고 에러가 납니다. 어디가 문제일까요?...

klara의 이미지

프로토타입과 정의 모두 반환형이 빠져있으며, 정의의 경우는 클래스 스코프도 빠져있네요...

netionics의 이미지

op+가 Polinormial의 멤버인 것 같은데
op+에서 int를(Add()의 반환타입) 반환하는게 조금 이상합니다.
보통 해당 클래스의 객체를 반환하죠.

그리고 op+의 인자는 non const일 필요가 없습니다.

또, op+=는 멤버로 선언하지만 op+같은 경우에는 보통 비멤버 함수로 많이 선언합니다.
피연산자 모두가 동등한 타입 변환이 일어나도록 하게끔요.

:)

rjaechang의 이미지

결과 값이 int라서 int형으로 반환했구요. 정의에서 클래스 스코프 선언을 안해줘서 에러가 났었네요 ㅋ

(~`0`)~