簡體   English   中英

模板<class T> , &quot;錯誤: .... 沒有命名類型&quot;

[英]Template <class T> , "Error: .... does not name a type"

你好,我的模板有問題。 我想要一個使用模板的指針堆棧,但出現錯誤“未命名類型”。 我有兩個類,一個管理節點堆棧,另一個是節點類。 問題出在節點類中,我不知道如何解決。 有人可以向我解釋我應該如何使用在另一個類中聲明的模板創建節點對象。 代碼如下。

    template<class T> class PointerStack
    {
    public:
        PointerStack();
        bool isEmpty();
        bool push(T dataIn);
        bool pop();
        bool top(T &topItem);
        void clear();
        void print();
    private:
        int counter;
        Node<T>* start;
};

template<class T>
class Node
{
    public:
        Node(T dataIn);
        Node(T dataIn, Node vorigeIn);
        T getData();
        Node* getPrevious();
    private:
        T data;
        Node* previous;
        Node* next;
};


template<class T>
PointerStack<T>::PointerStack()
{
    counter == 0;
}

template<class T>
bool PointerStack<T>::isEmpty()
{
    if(counter == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

template<class T>
bool PointerStack<T>::push(T data)
{
    if(isEmpty())
    {
        start = new Node<T>(data);
        counter++;
        return true;
    }
    else
    {
        Node<T> dummy = start;
        start = new Node<T>(data, dummy);
        counter++;
        return true;
    }
}

template<class T>
bool PointerStack<T>::pop()
{
    if(isEmpty())
    {
        return false;
    }
    else
    {
        Node<T> dummy = start;
        start = start->vorige;
        counter--;
        delete dummy;
        return true;

    }
}

template<class T>
bool PointerStack<T>::top(T &topItem)
{
    if(isEmpty())
    {
        return false;
    }
    else
    {
        topItem = start.getData();
        return true;
    }
}

template<class T>
void PointerStack<T>::clear()
{
    while(isEmpty())
    {
        pop();
    }
}

template<class T>
void PointerStack<T>::print()
{
    Node<T> dummy = start;
    if(!isEmpty())
    {
        for(int i = 0; i < counter; i++)
        {
            std::cout<<dummy->getData();
            dummy->v;

        }
    }
}

template<class T>
Node<T>::Node(T dataIn)
{
    data = dataIn;
    previous = NULL;
    next = NULL;
}

template<class T>
Node<T>::Node(T dataIn, Node previousIn)
{
    data = dataIn;
    previous = previousIn;
    next = NULL;
    previousIn->volgende = this;

}

template<class T>
T Node<T>::getData()
{
    return data;
}

template<class T>
Node<T>*  Node<T>::getPrevious()
{
    return previous;
}

這是錯誤消息: <code>在此處輸入圖片描述</code>

您的 PointerStack 類不知道 Node 類。 您需要在聲明 PointerStack 之前轉發聲明您的 Node 類:

template<class T>
class Node;
/* Your code goes here */

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM