我正在尝试建立一个基本队列。我的头文件如下:
#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
我不确定为什么所显示的表达不被视为主要表达。任何帮助或链接将不胜感激提前感谢!
答案 0 :(得分:3)
您将类型(T
)视为变量。代码
void push(const T){
if(!isFull()){
queuePtr[++top] = T;
}
}
应该是
void push(const T& item){
if(!isFull()){
queuePtr[++top] = item;
}
}
或类似的东西。