Шаблон и BST

0

Объявление шаблона:

template <typename DataType>
class BST    

и ошибка, которую я продолжаю получать, - bst.h(101): см. ссылку на экземпляр шаблона класса "BST :: BinNode", скомпилированный bst.h(183): см. ссылку на экземпляр шаблона класса "BST", скомпилированный

Я думаю, что мой синтаксис может быть неправильным, но я не уверен, что это такое. Может кто-то подтолкнет меня в правильном направлении. Я просто не могу его скомпилировать. Класс BinNode является частным классом основного класса BST. Линейка, к которой относится ошибка, также относится к DataType BinNode :: treeheight (BinNode * p)

private:
/***** Node class *****/
class BinNode 
{
 public:

DataType data;
BinNode * left;
BinNode * right;
DataType treeheight(BinNode * p);

template <typename DataType>
DataType BinNode::treeheight(BinNode * p)
{
    if(p != 0)
    {
        int heightl = treeheight(p->left);
        int heightr = treeheight(p->right);
    }

    if(heightl > heightr)
        return heightl;

    else
        return height r;
}
  • 0
    BinNode не является шаблоном, но вы определяете его функцию-член, как если бы он был объявлен как шаблон. Более того, определение квалифицированной функции-члена ( BinNode::treeheight(…) {…} ) не входит в тело класса, как это вы сделали здесь. Поместите это вне класса.
  • 0
    Является ли класс Node шаблоном? Если да, то при определении функции-члена (то есть вне класса) вам нужно квалифицировать определение функции-члена как Node<DataType>::BinNode::treeheight(…) {…} поскольку BinNode является вложенным классом Node ,
Показать ещё 4 комментария
Теги:
templates
syntax
binary-search-tree

1 ответ

0

При определении функции-члена (вне класса, то есть) вам необходимо определить определение функции-члена как Node<DataType>::BinNode::treeheight(…) {…} поскольку BinNode является вложенным классом Node.

Ещё вопросы

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