使用模板创建类类型

时间:2015-07-04 09:23:58

标签: c++ templates pointers

我有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的代码,请告诉我。它的结构与此相同。

1 个答案:

答案 0 :(得分:1)

应为queue<nodeType<type> *> q;