у меня есть определенный класс, и я хочу создать 2 оператора, которые будут работать вместе
как класс с массивом, и я хочу изменить определенный индекс в массиве
нравится этот объект [3] = 5
Это возможно? если да, то как?
это код, который я сделал для оператора []
double Polynomial::operator[](int index) const {
int maxT = this->currentMax;
if (index > 0 && index < this->getDegree(false))
return this->coefficients[index];
cout << "overflow in index";
system("pause");
}
operator[]
это нетрадиционно. Большинство контейнеров пропускают проверку границ вoperator[]
(чтобы быть как можно быстрее) и предоставляют функцию-член с именемat()
, которая выполняет проверку границ и выдает исключение, еслиindex
выходит за границы. Кстати,index
обычно должен быть типаunsigned
, напримерsize_t
. Вот простой пример: godbolt.org/z/qr26cd - person Ted Lyngmo   schedule 22.04.2020[]=
, поэтому вы не можете его перегрузить. Вы можете перегрузить оператор[]
и оператор=
. - person Thomas Matthews   schedule 22.04.2020[]=
упоминался или подразумевался. В заголовке[]
и=
упоминаются отдельно. - person Ted Lyngmo   schedule 22.04.2020[]
и=
по отдельности. - person Thomas Matthews   schedule 22.04.2020operator[]
иoperator=
для меня, и реализацияoperator[]
(неoperator[]=
) также делает я думаю, что ОП знает, что это отдельные операторы. - person Ted Lyngmo   schedule 22.04.2020