Перегрузка операторов извлечения и вставки Переполнение стека

Здравствуйте, я перегружен операторы вставки и извлечения. когда я запускаю свою программу, 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;
}

1

Решение

istream& operator>>(istream& is, Polynomial Poly)

должно быть

istream& operator>>(istream& is, Polynomial& Poly)

То, что вы делаете сейчас, это просто смена членов копия вашего объекта:

Polynomial P1;
cin >> P1;

P1 не изменяется после этого.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]