У меня проблема, у меня есть этот класс, который теперь работает, потому что у меня есть атрибут публично, но если я помещаю его в приватный или защищенный и унаследованный ко второму классу, он не работает, как можно я делаю это?Наследование класса или вложенный класс, что лучше?
template <typename T>
class BinaryNode
{
public:
T key;
BinaryNode<T>* left;
BinaryNode<T>* right;
BinaryNode<T>* parent;
BinaryNode(){}
~BinaryNode(){}
};
И это:
template <typename T>
class BinarySearchTree
{
private:
BinaryNode<T>* root;
BinaryNode<T>* newNode(T key);
BinaryNode<T>* minimum(BinaryNode<T>* node);
BinaryNode<T>* maximum(BinaryNode<T>* node);
BinaryNode<T>* successor(BinaryNode<T>* node);
void insert(BinaryNode<T>** node, T key);
BinaryNode<T>* search(BinaryNode<T>* node, T key);
void distance(BinaryNode<T>* node, T key);
void inorderTreeWalk(BinaryNode<T>* node);
public:
BinarySearchTree();
~BinarySearchTree();
void insert(T key);
BinaryNode<T>* search(T key);
void distance(T key);
void inorderTreeWalk();
BinaryNode<T>* remove(BinaryNode<T>* node);
};
Я не уверен, что вы просите. Но, возможно, «BinaryNode» должен быть «другом» BinarySearchTree? Или вам нужно иметь «публичные» аксессоры к вашим «частным»/«защищенным» данным в «BinaryNode». В противном случае, как вы ожидали, что 'BinarySearchTree' получит доступ к свойствам? – Matt
Универсальных решений нет. Пожалуйста, добавьте информацию о [Что вы пробовали до сих пор] (http://mattgemmell.com/what-have-you-tried/), как именно «это не работает» * для вас *, и предоставить [SSCCE] (http://sscce.org/) (не копирование пасты всего кода). Без этой информации мы едва можем вам помочь. – Drop
https://www.dropbox.com/s/s8xsn3q01ysyy4f/classi.h Это файл заголовка со всеми, как я могу выполнять все атрибуты BinaryNode в закрытом или вложенном классе в binarysearchtree? – Raid3nz