Лаборатория Ubuntu
Опыт установки, настройки и использования
Ubuntu Linux Вопросы и ответы Об Ubuntu Новости Игры Записки для новичка
Поиск:

С++ | Форум


Вернуться к спискам тем

 Серж Андреев создал тему 04.06.2010 в 0:46
 Юзер  Сообщений: 107
 Репутация: 53

 Сейчас не на форуме
А в чем трабла с созданием соответствующего объкта (класса), реализующего подобный функционал?
Цитировать

 Менеджер по рекламе рекомендует
 Знаток своего дела  Сообщений: 1987
 Репутация: 5055

 Сейчас на форуме

 Семён Тихоненко ответил 04.06.2010 в 0:49
 Юзер  Сообщений: 160
 Репутация: 74

 Сейчас не на форуме
есть конечно методы public, но они не имеют отношения к делу. Проблема в том что метод класс не может возвращать значения разных типов, а только конкретное одно
Цитировать

 Серж Андреев ответил 04.06.2010 в 0:50
 Юзер  Сообщений: 107
 Репутация: 53

 Сейчас не на форуме
Да ну? )))
Цитировать

 Семён Тихоненко ответил 04.06.2010 в 0:51
 Юзер  Сообщений: 160
 Репутация: 74

 Сейчас не на форуме
я и интересуюсь, может всё-таки может возвращать и как?
Цитировать

 Серж Андреев ответил 04.06.2010 в 0:53
 Юзер  Сообщений: 107
 Репутация: 53

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

 Семён Тихоненко ответил 04.06.2010 в 1:03
 Юзер  Сообщений: 160
 Репутация: 74

 Сейчас не на форуме
это понятно, но указатель же должен быть конкретного типаа перегруженные функции не помогут, так элемент, например с целым ключом, может одновременно возвратить строковое, вещественное и целое значение
Цитировать

 Серж Андреев ответил 04.06.2010 в 1:06
 Юзер  Сообщений: 107
 Репутация: 53

 Сейчас не на форуме
Есть тип Variant.
Цитировать

 Серж Андреев ответил 04.06.2010 в 1:16
 Юзер  Сообщений: 107
 Репутация: 53

 Сейчас не на форуме
Страуструп: 13.3 Абстрактные типыСамый простой способ ослабить связь между пользователем класса и его создателем, а также между программами, в которых объекты создаются, и программами, в которых они используются, состоит в введении понятия абстрактных базовых классов. Эти классы представляют интерфейс со множеством реализаций одного понятия. Рассмотрим класс set, содержащий множество объектов типа T:. . . . class set {. . . . . public:. . . . . . . virtual void insert(T*) = 0;. . . . . . . virtual void remove(T*) = 0;. . . . . . . virtual int is_member(T*) = 0;. . . . . . . virtual T* first() = 0;. . . . . . . virtual T* next() = 0;. . . . . . . virtual ~set() { }. . . . . };
Цитировать

 Dmitri Novikoff ответил 04.06.2010 в 2:22
 Юзер  Сообщений: 89
 Репутация: 46

 Сейчас не на форуме
Какова конечная цель?Лично мое мнение, что Вы задумали какую-то ерунду.Но можете почтитать например:http://www.boost.org/doc/libs/1_43_0/doc/html/boost/ .
Цитировать

 Евгений Примако ответил 04.06.2010 в 3:33
 Новичок  Сообщений: 5
 Репутация: 12

 Сейчас не на форуме
Серж Андреев верно советует.Суть: создается базовый абстрактный класс(интерфейс) Object, реализующий основные операции. От него наследуются дочерние классы: Int, Double, Blablabla. Далее, идея: функция возвращает Object*, а его уже можно интерпретировать и как Int*, и как Double*, и т. д. Можно для удобства обернуть переменную типа Object* в класс, в котором сделать поле, хранящее информацию о типе, перегрузить пару операторов . И получим полноценный тип Variant :)
Цитировать


Чтобы ответить, нужно авторизоваться здесь

Страницы: 1 2 3


Пользователь
Авторизация на сайте:
Email:
Пароль:
Запомнить (Регистрация)

Новости
Ubuntu
Linux
Сайт
Игры
 Игры для Ubuntu
Текущие проблемы:
Видео отдельно / Аудио отдельно
Дата создания: 13.04.2009 17:22
gstreamer vs xine
Дата создания: 13.04.2009 3:19
Magic Nvidia
Дата создания: 12.04.2009 21:58
(РЕШЕНО) команда от root при загрузке системы
Дата создания: 12.04.2009 21:50
не работает openbox-gnome и openbox/kde
Дата создания: 12.04.2009 21:19
Русификация 9.04[Решено]
Дата создания: 12.04.2009 18:34

2010-2012 © Лаборатория Ubuntu