доступ к защищенным членам данных другого класса

Я пытаюсь реализовать красно-черное дерево и создал узлы, каждый из которых содержит левый дочерний узел, правый дочерний узел и родительский узел, хранящиеся как защищенные элементы данных в моем классе redBlackNode. В моей функции вставки мне нужно получить доступ к каждому защищенному элементу узла, такому как его левый дочерний элемент или его родитель, используя node->_left->_parent и так далее. Но мой компилятор жалуется, что

bst.h:77:29: error: ‘Node<int, int>* Node<int, int>::_left’ is protected
rbbst.h:160:3: error: within this context
bst.h:77:46: error: ‘Node<int, int>* Node<int, int>::_parent’ is protected
rbbst.h:160:3: error: within this context

Как я могу решить эту проблему?


person Community    schedule 01.08.2014    source источник
comment
Знакомы ли вы с аксессорами? Узел может показать другим, где находятся его соседи.   -  person Beta    schedule 01.08.2014
comment
Либо предоставьте общедоступные методы доступа, либо добавьте объявление друга для другого класса или функции.   -  person TheUndeadFish    schedule 01.08.2014


Ответы (3)


мои предложения: 1. перекодировать узел класса как структуру; 2. добавьте доступные общедоступные элементы, которые возвращают ссылку на эти элементы данных, и вы должны сделать член данных частным;

Наконец, простите мой плохой английский. Это мой первый ответ в этой сети.(●'◡'●)

person user3897977    schedule 01.08.2014

Вы также можете объявить определенную функцию для доступа к закрытым членам класса, используя ключевое слово «друг».

person Giovanni Pascotto Bonin    schedule 01.08.2014

Вы подклассифицируете основной класс. Помните, что в наследовании C++ только подклассы могут получить доступ к защищенным протоколам. Очистив это, попробуйте сделать методы общедоступными. Пожалуйста, покажите строки ошибок и код для получения дополнительной помощи.

person juanse254    schedule 01.08.2014