我有queue.h
,其中包含用于创建队列的基本代码。它也被编码为模板。我将继承该类作为我的binarySearchTree
类的一部分,因为我将在bst中使用queue
的方法。这是binarySearchTree
的类原型。我将在下面解释这个问题。
template <class type>
class binarySearchTree: public queue<type>
{
private:
template<class type>
struct nodeType
{
type info;
nodeType * lLink;
nodeType * rLink; //might need to put back <type> after nodeType if this doesn't compile
};
nodeType<type> * root;
int getLevelOfNode(nodeType<type> *node, type data, int level);
void printLevelOrder(nodeType<type> * rootNode);
public:
binarySearchTree();
int height(nodeType<type> *p);
bool search(const type &searchItem) const;
void insert(const type &newData);
void deleteNode(const type &deleteItem);
void deleteFromTree(nodeType<type> * &p);
int getLevelOfNode(nodeType<type> * node, type data);
void printLevelOrder();
int numDups;
};
对于私有方法printLevelOrder(nodeType<type> * rootNode)
的定义,我正在尝试创建一个存储nodeType对象指针的队列。例如,在其定义中,我想做这样的事情:
template<class type>
void binarySearchTree<type>::printLevelOrder(nodeType<type> * rootNode)
{
queue<nodeType*> q; //not working
//rest of code here
}
但这不起作用,我知道它必须与我设置模板的方式有关。我在使用模板方面不是很有经验,所以我该怎么做才能解决这个问题?
如果您需要我发布queue.h
的代码,请告诉我。它的结构与此相同。
答案 0 :(得分:1)
应为queue<nodeType<type> *> q;