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

Swap для элементов контейнера указателей на экземпляры абстрактного класса - C++

Восстановить пароль Регистрация
 
Merovingean
 Аватар для Merovingean
3 / 3 / 0
Регистрация: 14.12.2013
Сообщений: 67
16.12.2013, 21:53     Swap для элементов контейнера указателей на экземпляры абстрактного класса #1
Добрый вечер.

Не могу осилить проблему:
Описан абстрактный класс.
Описаны наследники этого класса уже без абстрактности.
Описан контейнер list из STL и описаны итераторы для него.
Элементы контейнера - указатели на экземпляры абс класса.
Контейнер заполнен различными наследниками абс класса.
Нужно поменять местами два различных элемента контейнера.

В обычном случае подошло бы
C++
1
swap(**i, **j);
Но здесь это не прокатывает, так как нельзя создать экземпляр абс класса.

Можно было бы написать в абс классе функцию, которая ссылалась бы на чистый виртуальный конструктор копирования, который бы переопределяли аналогичные конструкторы копирования в классах-наследниках, но в базовом классе опять же нельзя создать конструктор копирования по причине абстрактности.

Не могли бы вы подсказать, что делать в таком случае?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2013, 21:53     Swap для элементов контейнера указателей на экземпляры абстрактного класса
Посмотрите здесь:

Разные экземпляры класса ? C++
Двухмерный массив указателей из элементов объектов класса C++
C++ Создание экземпляра для наследника абстрактного класса
C++ Вывод контейнера указателей на экземпляры абстрактного класса
Целью работы является создание программы для обработки набора объектов с использованием класса -контейнера C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
16.12.2013, 22:44     Swap для элементов контейнера указателей на экземпляры абстрактного класса #2
Merovingean, в чём проблема поменять указатели?
Merovingean
 Аватар для Merovingean
3 / 3 / 0
Регистрация: 14.12.2013
Сообщений: 67
16.12.2013, 22:47  [ТС]     Swap для элементов контейнера указателей на экземпляры абстрактного класса #3
Цитата Сообщение от gray_fox Посмотреть сообщение
Merovingean, в чём проблема поменять указатели?
Просто так?
C++
1
swap(i, j);
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
16.12.2013, 22:49     Swap для элементов контейнера указателей на экземпляры абстрактного класса #4
Если i и j - это итераторы, то
C++
1
swap(*i, *j);
либо
C++
1
iter_swap(i, j);
Merovingean
 Аватар для Merovingean
3 / 3 / 0
Регистрация: 14.12.2013
Сообщений: 67
16.12.2013, 22:54  [ТС]     Swap для элементов контейнера указателей на экземпляры абстрактного класса #5
Спасибо.
Что-то я совсем туплю.
Уже второй раз в отчаянии лезу на этот форум с глупыми вопросами.(
Yandex
Объявления
16.12.2013, 22:54     Swap для элементов контейнера указателей на экземпляры абстрактного класса
Ответ Создать тему
Опции темы

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