c++队列实现错误

C++ Queue Implementation Error

本文关键字:错误 实现 队列 c++      更新时间:2023-10-16

我想做一个基本的队列。我的头文件如下:

#ifndef Queue_h
#define Queue_h
/**
    A simple Queue data structure
*/
template <class T>
class Queue{
public:
Queue(int s){
    size = s > 0 && s < 1000 ? s : 10;
    top = -1;
    queuePtr = new T[size];
}
~Queue(){
    delete[] queuePtr;
}
bool isEmpty(){
    return top == -1;
}
bool isFull(){
    return top == size - 1;
}
void push(const T){
    if(!isFull()){
        queuePtr[++top] = T;
    }
}
T pop(){
    if(!isEmpty()){
        return queuePtr[top--];
    }
}
 private:
int size;
int top;
T* queuePtr;
};
#endif

我得到以下错误信息

Queue.h: In member function 'void Queue<T>::push(T)':
Queue.h:30: error: expected primary-expression before ';' token

我不确定为什么所示的表达式不被认为是主表达式。任何帮助或链接将不胜感激,谢谢提前!

您将类型(T)视为变量。代码

void push(const T){
    if(!isFull()){
        queuePtr[++top] = T;
    }
}
应该

void push(const T& item){
    if(!isFull()){
        queuePtr[++top] = item;
    }
}

之类的