Ваш operator[]
является методом const
, поэтому его нельзя использовать для изменения членов. Если вы не хотите делать что-то необычное при присваивании элементу, вам не нужно немного operator=
, когда ваш operator[]
возвращает ссылку на элемент.
Как упоминалось в комментариях, проверка границ у operator[]
нетипично. Учтите, что в oop каждый вызов operator[]
будет выполнять проверку границ, даже если пользователь убедится, что используются только допустимые индексы. Это не совсем эффективно. Таким образом, в дополнение к вашему const
оператору вы можете предоставить этот
double& Polynomial::operator[](size_t index) { // <-- no const
return coefficients[index];
}
Если у вас также есть метод size
, вы можете написать al oop:
for (size_t i=0; i< poly.size(); ++i) {
poly[i] = i;
}
PS: system("pause")
- это не- go, см. система («пауза»); - Почему это не так?