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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Merovingean
3 / 3 / 0
Регистрация: 14.12.2013
Сообщений: 67
#1

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

16.12.2013, 21:53. Просмотров 346. Ответов 4
Метки нет (Все метки)

Добрый вечер.

Не могу осилить проблему:
Описан абстрактный класс.
Описаны наследники этого класса уже без абстрактности.
Описан контейнер 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++ Вывод контейнера указателей на экземпляры абстрактного класса
Целью работы является создание программы для обработки набора объектов с использованием класса -контейнера C++
C++ Согласно заданию реализовать класс абстрактного типа данных (далее АТД) как динамический массив. Для этого определение класса должно иметь следующие
C++ Использование абстрактного класса
C++ Нужно ли прописывать конструктор и деструктор для чисто виртуального абстрактного класса
Деструктор для абстрактного класса, использующего static vector C++
Как обратится к обьекту класса, являющегося наследником абстрактного класса C++
C++ Поместить в динамически расширяемый массив объекты класса, производные от базового абстрактного класса

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
16.12.2013, 22:44     Swap для элементов контейнера указателей на экземпляры абстрактного класса #2
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!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
16.12.2013, 22:49     Swap для элементов контейнера указателей на экземпляры абстрактного класса #4
Если i и j - это итераторы, то
C++
1
swap(*i, *j);
либо
C++
1
iter_swap(i, j);
Merovingean
3 / 3 / 0
Регистрация: 14.12.2013
Сообщений: 67
16.12.2013, 22:54  [ТС]     Swap для элементов контейнера указателей на экземпляры абстрактного класса #5
Спасибо.
Что-то я совсем туплю.
Уже второй раз в отчаянии лезу на этот форум с глупыми вопросами.(
Yandex
Объявления
16.12.2013, 22:54     Swap для элементов контейнера указателей на экземпляры абстрактного класса
Ответ Создать тему
Опции темы

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