Как правильно сделать умножение полинома на число? Почему я не могу умножить полином на число?[Error] no match for 'operator<<' (operand types are 'std::basic_ostream' and 'Polynom')
Вызов:cout << "5 * g = " << g * 5 << endl;
В класе:Polynom Polynom::operator *(double c) {
return multiple(c, *this);
}
Polynom multiple(double c, const Polynom& p) {
if (c == 0) {
Polynom result;
return result;
} else {
int degree = p.degree;
double* new_exponents = new double[degree];

for (int i = 0; i < degree; i++) {
new_exponents[i] = c * p.exponents[i];
}

Polynom result(degree, new_exponents);
delete[] new_exponents;

return result;
}
}
ostream& operator <<(ostream& os, Polynom& p) {
os << "{ degree: " << p.degree << "; coefficients: " << p.getCoefficientsStr() <

21 Авг 2019 в 06:07
253 +1
0
Ответы
1

Ошибка возникает из-за того, что оператор << не имеет определения для вывода объекта класса Polynom. Для того чтобы правильно умножить полином на число и вывести результат, необходимо перегрузить оператор << для класса Polynom.

Вы должны добавить перегрузку оператора << в вашем классе Polynom или вне его, чтобы можно было выводить объекты класса Polynom в поток вывода. Например, вы можете добавить следующую перегрузку оператора << вне класса Polynom:

ostream& operator <<(ostream& os, const Polynom& p) {
os << "{ degree: " << p.degree << "; coefficients: " << p.getCoefficientsStr() << " }";
return os;
}

После этого ваш вызов cout << "5 * g = " << g * 5 << endl; должен работать правильно.

20 Апр 2024 в 13:23
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир