233 / 215 / 63
Регистрация: 01.09.2012
Сообщений: 2,103
|
|||||||||||
1 | |||||||||||
Использование объекта одного класса при создании нового класса20.03.2013, 19:00. Показов 1749. Ответов 7
Метки нет (Все метки)
Добрый вечер. У меня такая проблема. Есть готовый класс L2 - список, на его основе нужно создать дек. Я поступил так:
в приватной части дека объявил переменную типа L2, и на ее основе реализовал все остальные функции, конструкторы там, деструктор и прочее. Возникла проблема с оператором =. Чего то не могу сообразить как это сделать, подскажите пожалуйста. Код приведен ниже файл deque.h
0
|
20.03.2013, 19:00 | |
Ответы с готовыми решениями:
7
Ошибка при создании объекта класса Ошибка при создании объекта класса Ошибка при создании объекта класса Объявление объекта одного класса в описании другого класса |
20.03.2013, 19:19 | 2 | |||||
Нафига нужен такой класс, если твой дек предоставляет интерфейс такой же, как у нижележащего списка?
Не стоит явно вызывать деструктор, он и так вызовется, а у тебя он вызывается дважды.
0
|
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
|
||||||
20.03.2013, 19:22 | 3 | |||||
1
|
20.03.2013, 19:27 | 4 |
Когда ты реализуешь одну фукциональность на основе другой, идеалогически правильно использовать композицию, а не наследование.
В данном случае вообще не понятно, зачем нужен этот класс, так как интерфейс у него абсолютно такой же, как у L2.
2
|
584 / 387 / 216
Регистрация: 20.01.2013
Сообщений: 1,169
|
|
20.03.2013, 19:29 | 5 |
0
|
233 / 215 / 63
Регистрация: 01.09.2012
Сообщений: 2,103
|
|
20.03.2013, 19:46 [ТС] | 6 |
В деке нет вставки и удаления на указанную позицию. А какие есть еще варианты? Мне, если честно такая реализация тоже не очень нравится, а до более грамотного решения не додумался. Подскажите пожалуйста
0
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
20.03.2013, 23:23 | 7 |
Наследование — это когда одна функциональность = другая в полном объёме + что-то ещё или что-то по-другому.
Раз у списка нет вставки, то придумайте, как реализовать дек так, чтобы она была.
2
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
20.03.2013, 23:38 | 8 |
нормальная реализация из того, что было. главное список наружу не торчит и в случае чего можно будет сделать дек на основе чего-то другого. то, что интерфейсы у списка и дека получились одинаковые - это совпадение. если сделать например на основе std::list то этого уже не будет. но клиенты исходного дека останутся без изменений, т.к. интерфейс дека остался без изменений.
по поводу оператора =: если L2 написан по нормальному, то у него уже должен быть такой оператор. а раз так, то методы: ~deq(); deq(const deq& d); deq& operator = (const deq& d); вообще писать не надо. то, что сгенерит компилятор по умолчанию вполне будет работоспособным.
1
|
20.03.2013, 23:38 | |
20.03.2013, 23:38 | |
Помогаю со студенческими работами здесь
8
Использование перегруженного оператора ввода/вывода в поток базового класса для объекта производного класса ООП в C++: Вызов родительского конструктора с параметром при создании объекта дочернего класса rand() при создании разных объектов одного класса в них одинаков Использование метода из одного класса в другом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |