1
我想實現一個堆,但是我的函數中有一個上面的錯誤。不可識別的模板聲明/定義
這是我的頭文件:
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;
}
您需要在那裏有一個'typename'。或者,如果他正在使用C++ 11,則可以執行'堆 :: getRoot() - >節點 *'。 –
0x499602D2
@ 0x499602D2 - 增加了'typename'。謝謝。我通常的做法是讓它離開,看看編譯器是否抱怨。 –
哦,這很聰明。非常感謝 –