0
模板声明:模板和BST
template <typename DataType>
class BST
而且我不断收到错误 bst.h(101):见参考文献类模板实例 'BST :: BinNode' 正在编制 BST .h(183):请参阅参考正在编译的类模板实例化'BST'
我认为我的语法可能是错误的,但我不确定它是什么。有人能把我推向正确的方向吗?我无法让它编译。 BinNode类是主类BST的私有类。错误是指太行是数据类型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;
}
'BinNode'不是一个模板,但是你定义了它的成员函数,就好像它被声明为模板一样。而且,一个合格的成员函数定义('BinNode :: treeheight(...){...}')不会进入类体内部,因为它看起来像你在这里完成的。放在课堂外面。 – 0x499602D2 2014-11-14 23:11:06
“Node”类是模板吗?如果是这样,当定义成员函数(在类之外)时,您需要将成员函数定义限定为节点 :: BinNode :: treeheight(...){...},因为'BinNode'是一个嵌套类'Node'。 –
0x499602D2
2014-11-14 23:12:32
我认为这是因为它使用DataType作为数据变量,但这是唯一的指示器,它是模板的一部分 – bigdog225 2014-11-14 23:18:42