2017-11-03 12 views
-1

다항식 클래스를 작성해 왔고 연산자를 오버로드했습니다. 나는 성공적으로 + = 연산자를 오버로드하여 (이제는) 관리 할 수있게되었고, 이제는 많은 소스에서 권고 된 것처럼 추가를 위해 + =를 사용하는 외부 함수를 만들었습니다. 그것은 작동하지만이오버로드 된 + 연산자 연결

poly a, b, c, d; 
a=b+c+d; 

같은 다항식을 추가하려고하면 나는 오류 얻을 어떤 이유로 그들을 체인 수 없습니다 : '폴리 :: 폴리 (CONST 폴리)'에 대한 호출에 대한 일치하는 기능을

내 + = 함수의 본체는 모두 중요하지 않지만 그게 어떤 건지입니다 :

poly& operator+= (const poly& a){ 
     //implemented += 
     return *this; 

    } 

내 추가 기능 (클래스 외부) 다음과 같습니다

const poly operator+ (poly a, const poly & b){ 
    a+= b; 
    return a; 
} 

여기서 내가 뭘 잘못하고 있니?

+0

왜'operator +'는'const'를 반환합니까? – vu1p3n0x

+2

'a'와'b'는'const &'이어야합니다. –

+2

[copy constructor] (https://stackoverflow.com/questions/2168201/what-is-a-copy-constructor-in-c)이 누락되었습니다. –

답변

1

poly 클래스에 poly(const poly&) 형식의 복사 생성자가 없습니다. 이미 충분하지 않은 poly(poly&)이있는 경우 유의하십시오. 매개 변수로 const poly&을 사용하는 복사 생성자가 필요합니다.