내 프로그램에서 + = 연산자를 오버로드하려고합니다. * 폴리 (A 노드에 대한 포인터) 내 노드 구조체입니다노드 멤버의 클래스에서 + = 연산자 오버로드
struct Node{ int coefficient;
Node* next; };
, 나는 다항식에 그것은 int로 학위 (다항식의 최고 수준)와 노드를 포함하는 다항식 클래스로 구성되어 과부하입니다 클래스. 그 중요한 경우
Polynomial& Polynomial::operator +=(const Polynomial& rP){
Polynomial copyRP(rP);
poly->coefficient = poly->coefficient + copyRP.poly->coefficient;
poly = poly->next; //if I take this and
copyRP.poly = copyRP.poly->next; //this away, it runs fine
//with it however the program compiles but doesnt work
return *this;
}
노드는 이전 버전과 계수의 목록이 포함되어 있습니다. 예를 들어 3 배는^2 + 2 배 + 5 5> 2-> 3과 노드에 저장되고, 2
그리고 다항식 클래스의 정의는 무엇입니까? 어떻게 작동하지 않습니까? 왜 제대로 작동하지 않는다고 말하는 줄이 필요한가요? 왜'operator + ='는 아무것도 복사하지 않습니까? – Potatoswatter
'rP.poly = rP.poly-> next'는 lvalue가 수정 될 수 없다고 말할 것이기 때문에 copy를 만들었고'poly = poly-> next'와'copyRP.poly = copyRP '를 유지하면 제대로 동작하지 않습니다. poly-> next' 그리고'while (poly! = NULL) '을 넣어서 전체 노드에 추가하는 것을 잊어 버렸습니다.하지만 내 프로그램에 넣었습니다. –
두 개의 다항식을 가진다면 ^^ + 2x + 2와 2x^2 + 3x + 4, 5x^2 + 5x + 6을 반환하고 싶습니다. 두 개의 다항식을 더합니다. 그러나 'return * this'을 시도 할 때마다 나는'this'의 사본을 만든다, 그것은 사본을 돌려 보낼 수있게 해준다, 나는 그것을 얻지 않는다 !!! –