Давайте предположим, что мы имеем реализацию RedBlack-Tree, который состоит из 2-х классов:Продление классов и конкретизации
Tree
- содержит указатель наNode *root
дерева и определяет все операции над деревом (Insert
,Delete
и т.д.)Node
- хранение данных, который содержит указатели наNode *parent
,Node *left
,Node *right
узлов иstd::string key
.
Tree::Insert()
имеет следующую реализацию:
void Tree::Insert(const std::string &key)
{
Node *z = new Node(key);
// adding node logic
}
Теперь задача: каждый узел должен хранить время его создания.
Ограничения: реализация базового дерева должна быть изменена как можно меньше и должна содержать сведения об определенных расширениях (чтобы она не знала ничего о свойстве времени создания).
Мои мысли: распространяется NodeWithTime : Node
и добавлено unsigned int creation_time
Недвижимость.
Где я застрял: как мы будем создавать экземпляр узла сейчас?
Любые предложения?
PS: это не домашнее задание или задание - я просто изучаю C++ и структуры данных.
«расширение» - это терминология Java. В C++ вы ** получаете ** из класса. –