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

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

Войти
Регистрация
Восстановить пароль
 
[progeR]
30 / 8 / 0
Регистрация: 20.08.2011
Сообщений: 603
#1

Увеличение функциональности без использования наследования. Как? - C++

01.01.2013, 11:07. Просмотров 321. Ответов 2
Метки нет (Все метки)

Добрый день.
Можно ли как-нибудь еще увеличить функциональность своего класса без использования наследования?
Делаю свой класс А, в нем хочу реализовать несколько фич класса B. Сам я эти фичи написать не могу, т.к. не знаю, как они делаются, да и зачем изобретать велосипед. Ради каких-то нескольких функций наследовать класс B не хочу.
Что можете посоветовать? Может хитрости какие есть?

Знаю один вариантов. В своем классе создать объект класса B и через него использовать нужные функции. Круто, но это прокатит только с public членами.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.01.2013, 11:07     Увеличение функциональности без использования наследования. Как?
Посмотрите здесь:

Сортировка, без использования массивов C++
C++ Решить без использования массивов
C++ Как написать генератор чисел без использования стандартных функций?
C++ Как обойти массив без использования цикла
Вывод чисел от 1 до N без использования while, for C++
C++ Наследование без использования двоеточия
Продолжение цепочки наследования без дублей базовых классов C++
Как найти медиану неотсортированного массива (без использования дополнительного массива) C++
Игровые движки пишут сначала на c++ без использования WinAPI объясните как? C++
C++ Подскажите как найти слово строке в котором больше 2 букв 'a', а затем вывести его?Без использования string
C++ Как скопировать массив в вектор одной строкой без использования циклов и алгоритмов STL?
C++ Как узнать имя проекта dll без использования GetModuleFileName?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байр
15 / 15 / 1
Регистрация: 09.12.2011
Сообщений: 64
01.01.2013, 11:58     Увеличение функциональности без использования наследования. Как? #2
Тоесть вы хотите "частично" унаследовать класс? Лично я никогда о таком не слышал. Концепция ООП - это когда любой наследник имеет полный функционал клааса предка, + свой собственный.
Цитата Сообщение от [progeR
Круто, но это прокатит только с public членами.
Смотря члены с каким идентификатором нужны. Если нужны ещё и Protected, то только наследование. А вот если private. то только friend классы. Так что от наследовния не уйти)
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
01.01.2013, 13:11     Увеличение функциональности без использования наследования. Как? #3
Одно из двух: или наследуешь всё, или делаешь сам. Можно наследовать не от самого класса, а от его предка. Несколько независимых классов могут случайно иметь общие свойства. Например, лошадь и электростанция одинаково имеют максимальную мощность не будучи потомками ни друг друга, ни какого либо другого класса. Город же и скала закономерно имеют общее свойство - географические координаты, так как оба - потомки общего предка - географического объекта. Катер и лошадь-скакун - тоже потомки общего предка - транспортного средства. Катер и электростанция - потомки общего предка - машины. Но лошадь и электростанция не лезут в общие рамки ни как, общий атрибут имеют.

Добавлено через 4 минуты
Цитата Сообщение от [progeR
;3939493]Знаю один вариантов. В своем классе создать объект класса B и через него использовать нужные функции.
Агрегировать что ли? А действительно ли экземпляр A включает в себя экземпляр B? Если это двигатель и газонокосилка, то такой подход оправдан, но если экземпляры класса B не могут быть частями экземпляров класса A то так делать нельзя. Например, нельзя агрегировать автомобиль в ракету.
Yandex
Объявления
01.01.2013, 13:11     Увеличение функциональности без использования наследования. Как?
Ответ Создать тему
Опции темы

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