Я пытался реализовать и AVL Tree, но я продолжаю получать эти 2 ошибки C2954 и C2955 и не знаю, как их решить

0

Вот мой код. Я написал сообщения об ошибках, которые произошли рядом с соответствующими строками

//AVL Tree implemantation
template<class Element>
class AVLtree
{
    public:
      int height(AVLnode<Element>*)const;
    int max(int,int)const;
};
//Function to get the max
template<class Element>
int AVLtree<Element>::max(int a, int b)
{
return ((a>b)?a:b);
} //Error:'AVLtree<Element>::max' : unable to resolve function overload
//Function to calculate the height
template<class Element> //Error:error C2954: template definitions cannot nest
int AVLtree<Element>::balanceFactor(AVLnode<Element>* p)
{
return (height(p->left) - height(p->right));
}
  • 0
    Пожалуйста, постарайтесь выделить проблему в минимальном, компилируемом примере, а не публиковать всю свою программу.
  • 0
    @merlin2011 merlin2011 дело в том, что эти функции вызывают друг друга, я изолировал остальные
Показать ещё 4 комментария
Теги:
templates
data-structures
tree
avl-tree

1 ответ

2
Лучший ответ

Первая ошибка заключается в том, что объявлена max() как функция-член const но вы пытаетесь определить ее как функцию-член non- const. Вам нужно добавить const в определение:

template<class Element>
int AVLtree<Element>::max(int a, int b) const {
    return std::max(a, b);
}

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню