Объявление шаблона:шаблона и BST
template <typename DataType>
class BST
и ошибка, что я получаю это bst.h (101): см ссылку на шаблон класса конкретизации «BST :: BinNode» компилируется BST .h (183): см. ссылку на экземпляр шаблона класса «BST», который скомпилирован
Я думаю, что мой синтаксис может быть неправильным, но я не уверен, что это такое. Может кто-то подтолкнет меня в правильном направлении. Я просто не могу его скомпилировать. Класс BinNode является частным классом основного класса BST. Линия ошибка имеет в виду тоже DataType BinNode :: treeheight (BinNode * р)
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;
}
'BinNode' не является шаблоном, но вы определяете его функцию-член, как если бы он был объявлен как шаблон. Более того, определение функции квалифицированного члена ('BinNode :: treeheight (...) {...}') не входит в тело класса, поскольку похоже, что вы это сделали. Поместите его вне класса. – 0x499602D2
Является ли класс 'Node' шаблоном? Если это так, при определении функции-члена (вне класса, то есть), вам нужно квалифицировать определение функции-члена как «Node :: BinNode :: treeheight (...) {...}', поскольку 'BinNode' является вложенным классом «Узел». –
0x499602D2
Я предположил, что это связано с тем, что он использовал DataType для переменной данных, но это единственный индикатор, который является частью шаблона – bigdog225