2014-01-11 1 views
0

클래스 Task의 정렬 된 목록을 저장하는 QueueSorted 클래스가 있습니다.연산자 오버로드 - 동적 객체 배치 문제

QueueSorted q1; 

qq1+=t1; // adding object t1 to the list 
qq1+=t2; 
qq1+=t3; 

위의 코드는 작동합니다.

이 코드

가되지 않습니다 :

QueueSorted *q1 = new QueueSorted(); 

qq1+=t1; 
qq1+=t2; 
qq1+=t3; 

+ = 프로토 타입은 다음과 같습니다

Queue & operator+=(const Task & task); 

가 말한다 "더 연산자 + = 다음 피연산자 일치하지 않습니다." 작동 원리 두 번째 경우

+1

이것은 동적 할당 BTW와는 아무런 관련이 없습니다. – juanchopanza

답변

2

당신은 다음과 같은 형태로 사용해야합니다

qq1->operator+=(t1); 
qq1->operator+=(t2); 
qq1->operator+=(t3); 

또는

(*qq1) += t1; 
(*qq1) += t2; 
(*qq1) += t3; 
+0

참고 : 첫 번째 코드는 가능하지만 코드를 더 읽기 쉽게 만들기 위해 연산자의 철학을 무시합니다. – deepmax

+0

@MM. 물론이지. 나는이 예제에서 포인터 역 참조 연산자를 사용해야한다고 강조했다. – vershov

1

당신은 *에 의해 역 참조해야 다음 연산자를 사용

*qq1 += t1; 

그렇지 않으면 컴파일러 포인터를 대기열에 정렬 된 wh에 +=을 적용하려고합니다. 해당 사항 없음.