C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Работа с динамическими структурами данных, как реализовать operator= в классе
DenisMark
Отправлено: 27.06.2004, 08:25


Не зарегистрирован







Плиз хелп.

В своей первой программе на c++ запихал класс описывающий динамическую структуру данных в list.
В итоге столкнулся с проблемой: при копировании из одного списка в другой, и последующим удалением первого списка, я теряю информацию во втором. Потому-что при копировании list для каждой записи используется не копирующий конструктор, а операция =, которая оставляет все ссылки на соседние элементы без изменений.
Можно ли реализовать operator= в классе и как это практически сделать, у меня не получается?
Boyko
Отправлено: 28.06.2004, 13:33


Станционный диспетчер

Группа: Участник
Сообщений: 88



У тебя = копирует адрес или содержания?

Давай програму!
Daan
Отправлено: 29.06.2004, 07:28


Дежурный стрелочник

Группа: Участник
Сообщений: 62



При выделении памяти динамически интерфейс класса должен по минимуму выгледеть так:
class list
{
...
public:
list();
~list();
list(const list&);
const list operator=(const list&);
};

Отредактировано Daan — 29/06/2004, 09:44
Георгий
Отправлено: 29.06.2004, 12:13


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



CODE
const list operator=(const list&);
Может я ошибаюсь, но мне казалось, что обычно пишут так:
CODE
list& operator=(const list&);
DenisMark
Отправлено: 01.07.2004, 19:48


Не зарегистрирован







Спасибо всем
Прошу прощения за потраченное время, моя проблема не стоила и выеденного яйца. Сам разобрался. Контейнер при записи объекта вызывает копирующий конструктор корректно, и при копировании из одного контейнера в другой так же используется копирующий констуктор, поэтому все у меня было нормально.
Ошибки обнаружил в программе создания объекта.

Вернуться в Вопросы программирования в C++Builder