![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
zim22 |
|
||||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
Необходимо было реализовать список, который может хранить элементы трёх разных типов: int, double, string.
С помощью селектора типов я реализовал задачу. Но моё решение мне не нравится, по нескольким причинам: 1) избыточность данных. Т.к. данные я храню в классе DataType и реально используется только один тип данных. 2) в дальнейшем может понадобиться добавить новые типы для хранения, например vector<string>, Complex, Shape. И мне необходимо будет модифицировать классы... Что вы можете предложить? Расширения типа boost не предлагать. Должно быть на чистом С++. List.h
main.cpp
|
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
|
|||
|
||||
zim22 |
|
||||||||||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
мой опыт общения с boost - исползьование shared_ptr ![]() я думал, что может быть просто есть архитектура или паттерн, который позволяет решить мою задачу более элегантно, чем это сделал я. math64, спасибо, это почти то, что надо. Однако сейчас список заполняется так:
Как сделать, чтобы заполнение было прозрачно для пользователя?
Я перегрузил функцию push в классе List,
но всё-равно необходимо явно указывать тип объекта,
иначе компилятор ругается
Это сообщение отредактировал(а) zim22 - 26.5.2009, 15:48 |
||||||||||
|
|||||||||||
azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
а я о чем? написать что нибудь вроде boost::any
и использование
далее TypeConverter можно специализировать для любых не POD типов. Это сообщение отредактировал(а) azesmcar - 26.5.2009, 15:58 |
||||||||
|
|||||||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
azesmcar, то, что надо!
![]() |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
В примере azesmcar объекты будут храниться в списке уже в виде строк. Но можно конвертировать и в Data*
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |