C++ 无法识别的模板声明/定义
我试图实现一个堆,但是我的一个函数出现了上面的错误 这是我的头文件:C++ 无法识别的模板声明/定义,c++,templates,C++,Templates,我试图实现一个堆,但是我的一个函数出现了上面的错误 这是我的头文件: 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)
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();
};
模板
类堆
{
私人:
类节点{
E数据;
节点*左;
节点*右;
};
节根;
整数长度;
E*预排序(E*列表、整数长度、节点);
E*inoder(E*list,int-length,Node);
E*后序(E*列表,整数长度,节点);
void clear(Node Node);//递归地清除所有节点并释放所有指针
公众:
Heap();
堆(E*list,int-length);
~Heap();
Node*getRoot();
void buildHeap(E*list,int-length);
E*返回列表();
};
以及讨论中的具体功能(尽管其他方面也有类似的错误)。第二行有错误
template <typename E>
Node<E> * Heap<E>::getRoot() {
return &root;
}
模板
节点*堆::getRoot(){
返回&根;
}
编译器正在抱怨节点
;全局范围中没有名为节点的模板。代码必须说明它是成员模板:
template <typename E>
typename Heap<E>::Node * Heap<E>::getRoot() {
return &root;
}
模板
typename堆::节点*堆::getRoot(){
返回&根;
}
您需要一个类型名
。或者,如果他正在使用C++11,您可以执行Heap::getRoot()->Node*
。@0x499602D2-添加typename
。谢谢我通常的方法是省略它,看看编译器是否会抱怨。