0
다항식 클래스가 있고 +, -, * 연산자와 < < 연산자를 오버로드했습니다. 단일 다항식 객체가 아닌 poly1 + poly2와 같은 표현식을 출력하려고 시도하기 전에는 모두 잘 작동하는 것처럼 보입니다. 내 < < 운영자 코드 (I 이미 제대로 작동 인쇄 멤버 함수가) 여기에연산자 오버로드 문제 C++
Polynomial operator+ (const Polynomial& poly1, const Polynomial& poly2){
vector<int> final_coeffs;
if (poly1.Degree()>poly2.Degree())
{
for (int i=0; i<=poly2.Degree(); i++)
final_coeffs.push_back(poly2.Coefficient(i) + poly1.Coefficient(i));
for (int i=poly2.Degree()+1; i<=poly1.Degree(); i++)
final_coeffs.push_back(poly1.Coefficient(i));
}
else
{
for (int i=0; i<=poly1.Degree(); i++)
final_coeffs.push_back(poly1.Coefficient(i) + poly2.Coefficient(i));
for (int i=poly1.Degree()+1; i<=poly2.Degree(); i++)
final_coeffs.push_back(poly2.Coefficient(i));
}
return Polynomial(final_coeffs);
}
: 그리고 여기
내 더하기 연산자 코드ostream& operator<< (ostream& out, Polynomial& poly){
poly.print();
return out;
}
문제는 경우에 발생 I 메인에서 이것을 시도하십시오 :
cout << poly1+poly2;
B 유타가 잘 작동이 그냥 할 경우 :
cout << poly1;
오류 메시지가 말한다 : 잘못된 바이너리 표현 피연산자 ('ofstream'(일명 'basic_ofstream') 등)
그리고 대한 ('다항식' 특정 기능을 사용해야합니다 : 후보 기능이 실행 가능하지 않습니다 : 두 번째 인수에 l 값이 필요합니다.
감사합니다!
'operator +'는'operator + ='의 관점에서 구현되어야합니다. – chris
음, 오류 메시지가 정확합니다 - 연산자 << const의 두 번째 매개 변수를 만듭니다. –
'operator <<'는'ostream' 인수를 무시하고'print()'가 사용하는 모든 스트림으로 출력합니다. – Oktalist