Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

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

Вывод контейнера указателей на экземпляры абстрактного класса - C++
Добрый день. Задача требует описать абстрактный класс и несколько наследников этого класса. Затем, описать контейнер (list)...

вектор указателей абстрактного класса - C++
Добрый вечер, задача состоит в следующем: найти наибольшую площадь фигуры, посредством использования полиморфизма (родительский абстрактный...

Создание экземпляра для наследника абстрактного класса - C++
Есть абстрактный базовый класс: class Base { public: int variable; virtual void clearVirtualFunction() = 0; }; ...

Деструктор для абстрактного класса, использующего static vector - C++
Доброго времени суток. Возникла проблема с написание деструктора абстрактного класса, использующего static vector для хранения ссылок на...

Нужно ли прописывать конструктор и деструктор для чисто виртуального абстрактного класса - C++
Всем привет! Порылся в интернете, но не смог найти конкретного ответа на свой вопрос. Возможно я просто не смог грамотно сформулировать...

Как обратится к обьекту класса, являющегося наследником абстрактного класса - C++
Здравствуйте! У меня есть 4 класса: один виртуальный, следующие 2 - наследуют виртуальный класс и последний класс содержит указатель на...

4
gray_fox
What a waste!
1551 / 1256 / 74
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 3
16.12.2013, 22:44 #2
Merovingean, в чём проблема поменять указатели?
1
Merovingean
3 / 3 / 0
Регистрация: 14.12.2013
Сообщений: 67
16.12.2013, 22:47  [ТС] #3
Цитата Сообщение от gray_fox Посмотреть сообщение
Merovingean, в чём проблема поменять указатели?
Просто так?
C++
1
swap(i, j);
0
gray_fox
What a waste!
1551 / 1256 / 74
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 3
16.12.2013, 22:49 #4
Если i и j - это итераторы, то
C++
1
swap(*i, *j);
либо
C++
1
iter_swap(i, j);
1
Merovingean
3 / 3 / 0
Регистрация: 14.12.2013
Сообщений: 67
16.12.2013, 22:54  [ТС] #5
Спасибо.
Что-то я совсем туплю.
Уже второй раз в отчаянии лезу на этот форум с глупыми вопросами.(
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2013, 22:54
Привет! Вот еще темы с ответами:

Поместить в динамически расширяемый массив объекты класса, производные от базового абстрактного класса - C++
Помогите пожалуйста новичку! (мне). Я хочу создать динамически расширяющийся массив указателей на базовый абстрактный класс,...

Двухмерный массив указателей из элементов объектов класса - C++
//point1.h #ifndef POINT_H #define POINT_H #include <iostream> class CIntArray { public:

Вывод контейнера указателей через потоковый итератор - C++
Доброго дня всем. Собственно: std::list<int*> list; list.push_back(new int(45)); list.push_back(new int(78)); ...

Целью работы является создание программы для обработки набора объектов с использованием класса -контейнера - C++
Целью работы является создание програмки для обработки набора объектов с использованием класса -контейнера динамический массив ( vector...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru