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