是什么意思"指针未在此范围内声明"

时间:2017-10-12 13:45:27

标签: c++ linked-list singly-linked-list

我的代码中有很多错误。 但我不知道错误的事情...... 有常见的错误按摩,以及"无效使用模板名称 'node'没有参数列表","'head_ptr'未在此声明 范围","'tail_ptr'未在此范围内声明", "'t'未在此范围内声明" , "模板参数1无效","'Node'"之前的预期类型说明符 我不认为我的整体代码是错误的。 但是太多错误让我思考 编码的所有组成都是错误的.. 它是所有代码的一部分。

error explanation

template <typename T>
Node* Node<t>::getNext(void)
{ return next; }

template <typename T>
class List
{
    private:
        Node* head_ptr; Node* tail_ptr; int numOfItems;
    public:
        List(); //constructor
        int size(void); bool isEmpty(void);
        void insertTail(T x);
        void removeHead(void);
        Node<T>* getHead(void);
        Node<T>* getTail(void);
        void insert_with_priority(T x);
};

template <typename T>
List<T>::List()
{ head_ptr = NULL; tail_ptr = NULL; numOfItems = 0; }

template <typename T>
void List<T>::insertTail(T x){
    Node<t>* newTail = new Node(x);
    tail_ptr->setNext(newTail);
    tail_ptr = newTail;
    numOfItems++;
}

template <typename T>
void List<T>::removeHead(void){
    if(numOfItems == 0)
        return 0;
    if(numOfItems == 1){ //i.e. headptr == tail_ptr
        delete head_ptr; head_ptr = NULL; tail_ptr = NULL;

&#39;    请给我很多反馈。

1 个答案:

答案 0 :(得分:1)

即使您的问题不完整,我也会帮助您解决一个错误(并且它也可以解决其他后续错误)......

让我们走线

template <typename T>
Node* Node<t>::getNext(void)
{ return next; }

你说getNext函数返回指向Node的指针。但是,在这种情况下, Node是什么?它不是类或类型,它是类或类型的模板。它不完整。您需要指定完整和完整的类或键入:

template <typename T>
Node<T>* Node<t>::getNext(void)
{ return next; }

请注意return-type,它现在是一个完整的