C++队列中应该注意的一些问题

第一次在C++中写类,新手,见笑

#include<iostream.h>

#include<iostream>

template<typename T>

class Queue

{

private:

int maxsize,front,rear;

T *q;

public:

Queue()

{

q=new T[maxsize];

rear=front=0;

}

~Queue()

{

delete []q;

}

bool AddQ(T item);

bool Delete(T &item);

bool QFull();

bool QEmpty();

int getsize();

};

template<typename T>

bool Queue<T> ::AddQ(T item)

{

rear=(++rear)%maxsize;

if(rear==front)

{

printf("The Queue is full");

if(!front)

{

rear=maxsize;

}

else

{

rear=rear-1;

}

return false;

}

else

{

q[rear]=item;

return true;

}

}

template<typename T>

bool Queue<T> ::Delete(T &item)

{

if(front==rear)

{

printf("The queue is empty!");

return false;

}

else

{

front=front+1;

front=front%maxsize;

item=q[front];

return true;

}

}

template<typename T>

int Queue<T> ::getsize()

{

return rear-front;

}

1、首先吧,类应该写到.h文件中

2、其次应该写与类名一样的构造函数

Queue()

{

q=new T[maxsize];

rear=front=0;

}

3、template<typename T>

这样的话就可以不限制使用的数据类型了

4、class之后的{}应该加;

5、

bool AddQ(T item);

bool Delete(T &item);

bool QFull();

bool QEmpty();

int getsize();

在类外写这些函数时,每一个函数前应该加template<typename T>

6、还有一个问题:

Delete(T &item)

Add(T item)

为什么一个取地址为什么另一个不取地址

试了一下,好像暂时两个都可以运行