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

Как расширить класс в С++? - C++

Восстановить пароль Регистрация
 
vratar32
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 14
18.06.2014, 00:20     Как расширить класс в С++? #1
Требуется добавить в класс метод, не добавляя его в описание класса.Пример - библиотека <algorithm>. То есть есть у нас, скажем, файл типа map. При подключении <algorithm> становятся доступны новые методы для объекта(функции предикаты, поиск, сортировка). Если так нельзя, то как выйти из такой ситуации, не прибегая к созданию класса наследника с новыми методами?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6159 / 2888 / 282
Регистрация: 04.12.2011
Сообщений: 7,686
Записей в блоге: 3
18.06.2014, 00:36     Как расширить класс в С++? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от vratar32 Посмотреть сообщение
становятся доступны новые методы для объекта(функции предикаты, поиск, сортировка).
Они же не становятся функциями-членами. Это шаблонные функции принимающие объекты шаблонных классов. Контейнеров в основном. Тот же предикат для своего объекта ещё определить надо или оператор сравнения по крайности. Если наследовать не хочется, можно так и поступить, - шаблон написать.
Но легче создать класс с вашим классом или объектом класса в качестве поля (ассоциировать) и собрать там недостающую функциональность. Или свободных функций принимающих объекты написать.
Можно еще указатели на интересующие методы в описании как поля разместить, а потом передавать в конструкторе или даже устанавливать в объекте () метод который интересен.
vratar32
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 14
18.06.2014, 13:32  [ТС]     Как расширить класс в С++? #3
Спасибо, помогло)
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6159 / 2888 / 282
Регистрация: 04.12.2011
Сообщений: 7,686
Записей в блоге: 3
18.06.2014, 16:33     Как расширить класс в С++? #4
Цитата Сообщение от vratar32 Посмотреть сообщение
Спасибо, помогло)
На всякий случай посмотрите:
http://ru.wikipedia.org/wiki/Functional_%28C++%29
и связыватель bind там же. Там на русском.j Может это близко к тому о чём Вы спросили.
Yandex
Объявления
18.06.2014, 16:33     Как расширить класс в С++?
Ответ Создать тему
Опции темы

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