У меня есть основной класс, который наследуется многочисленными подклассами.Унаследованный основной класс должен быть как минимум защищен по наследству, чтобы не производные классы могли использовать или изменять его через подклассы.
Существует ли способ, позволяющий различным подклассам изменять унаследованные переменные основного класса друг друга, но без разрешения публичного доступа к основному классу?А без использования ключевого слова friend это приведет к сложному коду.
В полном контексте:
У меня есть класс узлов, который добавляет / удаляет узлы относительно него.Существует класс списка (и подклассы), который полагается на класс узла, что означает, что узел не может быть общедоступным в случае, если он также нарушает список классов.Узел также должен быть доступен для списка вспомогательных классов.
Чтобы это произошло, я реализовал узел под защитой внутри другого класса, узла доступа.Все классы, которым требуются права на узел, наследуют узел доступа как защищенный (поэтому класс узла доступа не является общедоступным).Это означает, что помощник и класс / подклассы списка получают доступ к узлу.
Проблема в том, что для TemplateList, чтобы копировать CharList (подкласс TemplateList) через доступ только для чтения, ему нужен доступ к узлам.CharList (чтобы избежать использования итератора CharList) - проблема в том, что узлы защищены (для предотвращения внешнего вмешательства, не связанного с узлами доступа), и реализация открытого метода, который предоставляет доступ к узлам, побеждает точку.
Мне нужно боковое наследование, поэтому все подклассы типа accessnode могут обращаться к узлам друг друга без публичного предоставления доступа.
Вкратце:
(Защищено) Узел внутри AccessNode.
TemplateList: Защищенный AccessNode.
CharList: Защищенный AccessNode.
Для TemplateList необходим доступ к CharList's AccessNode.
AccessNode / Node не может быть открытым.