#include<iostream>
using namespace std;
template<class ElemType> class AbsQueue{
public:
AbsQueue(){}
virtual~ AbsQueue(){}
virtual int IsEmpty() const=0;
virtual int IsFull() const =0;
virtual void MakeEmpty()=0;
virtual void EnQueue(const ElemType& X)=0;
virtual void DeQueue()=0;
virtual const ElemType& Front() const=0;
private:
AbsQueue(const AbsQueue&){}
};
static const int initiSize=10;
template<class ElemType> class Queue:
public AbsQueue<ElemType>
{
private:
int front,rear,maxSize;
ElemType *Array;
void DoubleQueue()
{
int NewSize=2*maxSize;
ElemType* old=Array;
Array=new ElemType[NewSize];
for(int i=0,j=front;j!=rear;i++,Increment(j))
Array[i]=old[j];
front=0;
rear=i;
maxSize=NewSize;
delete [] old;
} void Increment(int& X)
{
if(++X==maxSize)
X=0;
}
public:
Queue():maxSize(initiSize),front(0),rear(0){
Array=new ElemType[initiSize];}
~Queue(){delete [] Array;}
void MakeEmpety(){ front=rear=0;}
int IsEmpty() const {return front==rear;}
int IsFull() const {return (rear+1)%maxSize==front%maxSize;}
const ElemType& Front() const
{
if(!IsEmpty())
return Array[front];
}
void EnQueue(const ElemType& X)
{
if(IsFull())
DoubleQueue();
Array[rear]=X;
Increment(rear);
}
void DeQueue()
{
if(!IsEmpty())
Increment(front);
}
const Queue& operator=(const Queue& R)
{
if(this==&R)
return this;
delete [] Array;
Array=new ElemType[R.maxSize];
maxSize=R.maxSize;
for(int i=front;i!=rear;Increment(i))
Array[i]=R.Array[i];
front=R.front;
rear=R.rear;
return *this;
}
};int main()
{
Queue<int> que();
for(int i=0;i!=5;i++)
que.EnQueue(2);}
在编译的时候始终会出现EnQueue的左边必须是类的错误,谢谢哪位能够帮帮我。