ошибка: назначение члена ‘x :: x’ в объекте только для чтения - PullRequest
2 голосов
/ 06 мая 2019

У меня возникли ошибки с кодом, которые я не могу устранить. Есть ошибки:

ошибка: назначение элемента "Line :: sum" в объекте только для чтения сумма = tmp;

ошибка: приращение члена "Line :: number" в объекте только для чтения номер ++;

ошибка: ссылка на привязку типа «Line &» к «const Line» отменяет квалификаторы возврата (* это);

Line & Line :: operator += (const Info & new) const{

    Info * tmp = new Info[number+1];

    for (int p=0; p<number; p++) 
        tmp[p] = sum[p];    // Sin memoria dinámica

    tmp[num_paradas] = new;  // Sin memoria dinámica


    delete [] sum;

    sum = tmp;
    number++;

    return(*this);
}

1 Ответ

3 голосов
/ 06 мая 2019

Для начинающих (Стандарт C ++ 17, 5.10 Идентификаторы)

3 Кроме того, некоторые идентификаторы зарезервированы для использования C ++ реализации и не должны использоваться иначе ; нет диагностики требуется.

Выберите другой идентификатор вместо слова new.

Во-вторых, функция-член имеет квалификатор const

Line & Line :: operator += (const Info & new) const{
                                              ^^^^^

Таким образом, элементы данных соответствующего объекта не могут быть изменены, если они не объявлены с помощью спецификатора mutable.

И согласно логике operator += функция-член должна быть объявлена ​​без квалификатора const

Line & Line :: operator += (const Info & new) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...