Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Доступ к защищенному свойству объекта |
Автор: wallstreet 15.7.2015, 22:58 | ||
Всем привет. Как можно получить доступ дочернему классу А к защищенному свойству базового класса?
|
Автор: Alexeis 16.7.2015, 09:48 |
Это отношения 2х объектов, а не части и целого. В этом случае наследование не помогает. Можно зафрендить классы (friend), тогда объекты смогут лазить друг к другу, но это плохой способ написания кода. В ООП не принято менять свойства другого объект напрямую. Только через посылку сообщения (вызов функции) . Френды используются когда строиться композиционная логика. Т.е. некоторые объекты не являются самостоятельной сущностью, а служат для дополнения логики некоторого главного объекта, тогда эти вспомогательные объекты будут ему друзьями. К дополнению через наследование это не относится. |
Автор: wallstreet 16.7.2015, 11:42 |
Спасибо, Alexeis у меня задача такая: 1. Есть текстовый файл с данными 2. Есть алгоритм анализа этих данных. Отсюда следует, что необходимо эти данные: 1) распарсить, 2) разложить по контейнерам для дальнейшего, более удобного доступа к ним и в итоге 3) проанализировать и 4) сделать вывод. В моем случае класс Base занимается 1) и 2) пунктами и переменная "а" это ничто иное как контейнер с распарсеными данными. В классе A прописаны методы анализа, т.е. занимается пунктом 3) из задачи, именно поэтому ему нужен доступ к контейнеру с данными. Подскажите, какую объектную модель было бы правильнее реализовать в моем случае? |
Автор: wallstreet 16.7.2015, 13:30 |
Спасибо, буду копать!) |
Автор: bsa 28.7.2015, 14:48 | ||
Плохой пример - std::list и std::sort несовместимы. Тут или std::sort надо заменить на что-то иное (например, std::fill), или std::list на std::deque. |
Автор: TarasProger 7.8.2015, 09:54 | ||
Добавлено @ 10:01 А зачем вообще понадобилось декларировать параметр типом ссылки на Base? Можно же использовать сам класс A: так как он - наследник, то у него тоже есть protected-поле a типа int, ведь любой экземпляр A одновременно является и экземпляром всех его предков. И к своему полю доступ есть. |