Здравствуйте, я перегружен операторы вставки и извлечения. когда я запускаю свою программу, Insertion, кажется, не выводит значения, хотя Extraction помещает значения в класс.
Кажется, что представление вставки экземпляра не имеет значений в нем.
Главный
/ Input Poly
cout << "Input p1: " << endl;
Polynomial P1;
cin >> P1;
// Output Poly
cout << "p1(x) = " << P1 << '\n' << endl;
Функция класса
//Insertion
ostream& operator<<(ostream& os, Polynomial Poly){
for (int i=0; i < Poly.polyNum; i++) {
os << Poly.poly[i] << " x^" << i;
if(i != Poly.polyNum - 1){
os << " + ";
}
}
return os;
}
//Extraction
istream& operator>>(istream& is, Polynomial Poly){
int numP = 0;
int * tempP;
is >> numP;
tempP = new int [numP+1];
for (int i=0; i < numP; i++) {
is >> tempP[i];
}
Poly.polyNum = numP;
Poly.poly = new int[Poly.polyNum +1];
for (int i=0; i < Poly.polyNum; i++) {
Poly.poly[i] = tempP[i];
}
return is;
}
istream& operator>>(istream& is, Polynomial Poly)
должно быть
istream& operator>>(istream& is, Polynomial& Poly)
То, что вы делаете сейчас, это просто смена членов копия вашего объекта:
Polynomial P1;
cin >> P1;
P1
не изменяется после этого.
Других решений пока нет …