我正在尝试实现一个堆,但我的其中一个函数出现了上述错误。
这是我的头文件:
template <typename E>
class Heap
{
private:
class Node {
E data;
Node * left;
Node * right;
};
Node root;
int length;
E * preorder(E * list, int length, Node node);
E * inorder(E * list, int length, Node node);
E * postorder(E * list, int length, Node node);
void clear(Node node); //Recursively clears all nodes and frees all pointers
public:
Heap();
Heap(E * list, int length);
~Heap();
Node * getRoot();
void buildHeap(E * list, int length);
E * returnList();
};
以及有问题的特定功能(尽管其他功能也有类似的错误)。第二行有错误
template <typename E>
Node<E> * Heap<E>::getRoot() {
return &root;
}
编译器抱怨Node<E>
;没有名为的模板Node
在全球范围内。代码必须说它是成员模板:
template <typename E>
typename Heap<E>::Node * Heap<E>::getRoot() {
return &root;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)