Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2013, 16:53   #1
dvigyand
Новичок
Джуниор
 
Регистрация: 27.04.2013
Сообщений: 1
По умолчанию Насчёт элементов в классе бинарное дерево поиска

Пишу контейнер "Бинарное дерево поиска" для частотного словаря.

С самим контейнером особо вопросов нету. Вопрос по поводу элементов в нём.

Я создал базовую структуру, описывающую элемент обычного бинарного дерева. Она содержит указатели на левый и правый вершины дерева.

Код:

template <typename T, typename TypeOfTreeElement>
struct CTreeElement
{
public:
    TypeOfTreeElement *Left;
    TypeOfTreeElement *Right;
protected:
    T Data;
public:
    CTreeElement(const T &Element): Data(Element), Left(nullptr), Right(nullptr) {};
    const T &GetData() const {return Data;};
};



Дальше я хочу создать структуру, описывающую элемент бинарного дерева поиска для частотного словаря( Эта структура должна наследовать верхнюю и добавляеть ещё int Count - количество раз, которое встретилось данное слово).
Причём указатели на левый и правый элемент должны быть уже типа CSearchTreeElement<T>. Поэтому пришлось в базовом классе вводить параметр типа typename TypeOfTreeElement



Код:
 
template <typename T>
struct CSearchTreeElement : public CTreeElement<T, CSearchTreeElement<T>>
{
public:
    int Count;
public: 
    CSearchTreeElement(const T &Element) : Count(1), CTreeElement(Element) {};
};




Если создавать объекты производного класса то проблем нет
Код:
CSearchTreeElement<int> X(4444);
. А если же пользователь хочет создать объекты базового класса то по хорошему он должен написать
Код:
CTreeElement<int, CTreeElement<int>> A(4444);
Но даже это не компилится

Советовали паттерн CRTP только я не понял как его тут заюзать
dvigyand вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бинарное дерево поиска Леопольдовна Помощь студентам 0 18.04.2013 23:21
Бинарное дерево поиска C++ Transcend Помощь студентам 2 01.04.2013 14:51
Бинарное дерево поиска С++ vadiprog Помощь студентам 1 06.05.2012 21:47
Бинарное дерево поиска Orli Общие вопросы C/C++ 1 15.12.2011 21:27