Полином ++: как увеличить p (x) на 1

у меня есть Polynomial класс, и я пытаюсь определить operator++как до, так и после увеличения, а также пытается определить до и после уменьшения, а именно operator--, Вот фрагмент моего кода:

class Polynomial
{
public:
Polynomial();
Polynomial(vector<int>coeffs);
/*
.
.
.
*/
Polynomial operator++();
Polynomial& operator++ (int unused);
Polynomial operator--();
Polynomial& operator-- (int unused);
/*
.
.
.
*/

private:
vector<int> coefficient;
};

Polynomial Polynomial::operator++()
{
coefficient[0]++;
return *this;
}
Polynomial& Polynomial::operator++ (int unused)
{
Polynomial copy(*this);
coefficient[0]++;
return copy;
}
Polynomial Polynomial::operator--()
{
coefficient[0]--;
return *this;
}
Polynomial& Polynomial::operator-- (int unused)
{
Polynomial copy(*this);
coefficient[0]--;
return copy;
}

Я получаю сообщение об ошибке при попытке сделать что-то подобное в основном:

Polynomial p(… какой-то вектор …);

cout << p++;

1

Решение

Вы возвращаете ссылки на временные файлы от ваших постфиксных операторов:

Polynomial& Polynomial::operator++ (int unused)
{
Polynomial copy(*this);
coefficient[0]++;
return copy;     // returning reference to local variable
}

Это неопределенное поведение. У вас есть возвращаемый тип поста и вы преобразуете его неправильно. Вам нужно что-то вроде этого:

Polynomial& operator++();
Polynomial operator++ (int);
Polynomial& operator--();
Polynomial operator-- (int);
2

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

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

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