Форум программистов, компьютерный форум CyberForum.ru

Присвоение this иного указателя - C++

Восстановить пароль Регистрация
 
Hunter13ua
46 / 46 / 5
Регистрация: 25.10.2011
Сообщений: 183
17.10.2013, 22:58     Присвоение this иного указателя #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void Polynomial::List::add_list_end(int value)
{
    Polynomial::List *new_obj = new Polynomial::List;
    new_obj->data = value;
    new_obj->next = NULL;
 
    if (this){
    Polynomial::List *temp = this;
    while (temp->next != NULL)
        temp = temp->next;
    temp->next = new_obj;
    } else
        this = new_obj;
}
Ошибка в последней строчке(|17|error: lvalue required as left operand of assignment|).Так делать, судя по всему, нельзя. Интересует почему.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2013, 22:58     Присвоение this иного указателя
Посмотрите здесь:

C++ Перезаписать память начиная с указателя Bitmap[1] элементами начиная с указателя Bitmap[0]
Написать обработчик исключений ситуации при преобразовании указателя на класс B до указателя на абстрактный класс А ... C++
Присвоение значений C++
Составить программу, в строке, введенному пользователем, подсчитывает число вхождений того или иного символа. Написать функцию count вычисления числа C++
C++ Присвоение структур
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
17.10.2013, 23:07     Присвоение this иного указателя #2
Цитата Сообщение от Hunter13ua Посмотреть сообщение
Так делать, судя по всему, нельзя. Интересует почему.
По той же причине, по которой не стоит пилить сук, на котором сидишь.

Если интересует чисто формальная сторона вопроса, то пункт 5.1.1/1 стандарта говорит о том, что this — это prvalue-величина (такой особый вид rvalue). А rvalue-величины не связаны с объективными сущностями в памяти, поэтому им нельзя присваивать значения.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.10.2013, 23:10     Присвоение this иного указателя #3
Цитата Сообщение от Hunter13ua Посмотреть сообщение
Интересует почему.
два объекта не могут распологаться по одному и тому же адресу, а подмена одного объекта другим противоречит ОО подходу
Hunter13ua
46 / 46 / 5
Регистрация: 25.10.2011
Сообщений: 183
17.10.2013, 23:34  [ТС]     Присвоение this иного указателя #4
Хорошо. Тогда следственный вопрос. То, что я предполагал сделать изначально - невозможно?
(Пояснение на примере. Есть указатель на NULL типа списка. Из него вызвать добавление нового элемента. При этом т.к. список пустой - указатель должен указывать на свежевыделенную область памяти.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
18.10.2013, 00:06     Присвоение this иного указателя #5
Всё возможно. Храните внутри Polynomial::List указатель на некий Polynomial::List::Element, в котором уже будут лежать данные и связи между элементами списка.

А вызов метода по NULL-указателю — это всё же потенциальный выстрел себе в ногу.
Yandex
Объявления
18.10.2013, 00:06     Присвоение this иного указателя
Ответ Создать тему
Опции темы

Текущее время: 09:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru