Ошибка: ожидаемый неквалифицированный идентификатор перед маркером ‘<’ - PullRequest
1 голос
/ 22 декабря 2011

Я пытаюсь создать какой-нибудь шаблонный Queue класс. Кажется, все в порядке, но я получаю 2 ошибки в одной строке, которые я не могу понять, почему. Ошибки появляются в файле реализации .cpp, где я пытаюсь дать определение деструктору. Вот код заголовочного файла класса:

#ifndef QUEUETP_H_INCLUDED
#define QUEUETP_H_INCLUDED

template <class T>
class QueueTp
{
    private:
        struct Node { T item; struct Node * next;};
        enum {QSIZE = 10};
        //Queue's head
        Node *head;
        //Queue's tail
        Node *tail;
        int size;
        int maxsize;
        QueueTp(const QueueTp & q);
        QueueTp & operator=(const QueueTp & q) { return *this;}

    public:
        QueueTp(): size(0),head(0),tail(0),maxsize(QSIZE) {};
        QueueTp(int q = QSIZE): size(0),head(0),tail(0),maxsize(q) {};
        ~QueueTp();
        bool isEmpty(){return size==0;}
        bool isFull() {return size==maxsize;}
        int sizecur() {return size;}
        bool push(const T& t);
        bool pop(T& t);
};

#include "QueueTp.cpp"
#endif // QUEUETP_H_INCLUDED

А вот определение деструктора в файле реализации:

#include "QueueTp.h"
#include <iostream>

using namespace std;

typename <class T>   //<-<-<- in this line I am getting the two errors
QueueTp<class T>::~QueueTp()
{
    Node *ptr;
    cout<<endl<<"Deleting the queue...";
    while (head !=NULL)
    {
        ptr = head->next;
        delete head;
        head = ptr;
    }
}

//......other method definitions

Ошибки указаны выше, а конкретные сообщения об ошибках, которые я получаю от компилятора, приведены ниже.

error: expected nested-name-specifier before ‘<’ token|
error: expected unqualified-id before ‘<’ token|
||=== Build finished: 2 errors, 12 warnings ===||

1 Ответ

2 голосов
/ 22 декабря 2011

Пожалуйста, используйте «template» вместо «typename» в строке, где вы получаете два сообщения об ошибках! Я обнаружил, что в большинстве случаев неопознанное ключевое слово или реальное ключевое слово в неправильном месте часто выдает ошибки, подобные неопределенному типу, следующий символ после него может вызвать ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...