using namespace std;
template<class T>
class Queue {
public:Queue(int size=0);
Queue(const Queue<T>& q);
virtual~Queue();
void In(T n);
const T Out();
bool Empty()const;
bool Full()const;
private:int max; T* Front, * Tail;
};
template<class T>
Queue<T>::Queue(int size)
{
Front=Tail = new T[(max = size)+1];
}
template<class T>
Queue<T>::Queue(const Queue<T>& q)
{
Front = new T[(max = q.max)+1];
Tail = Front + (int(q.Tail - q.Front));
for (int i = 0; i < int(Tail - Front); i++)
{
Front[i] = q.Front[i];
}
}
template<class T>
Queue<T>::~Queue()
{
delete[]Front;
}
template<class T>
const T Queue<T>::Out()
{
if (Tail == Front)
{
cout << "overflow" << endl;
return -1;
}
else
{
return *(Front++); //返回出队的该元素
}
}
template<class T>
void Queue<T>::In(T n)
{
if (int(Tail - Front) >= max)
cout << "overflow" << endl;
else *(Tail++) = n;
}
template<class T>
bool Queue<T>::Empty()const
{
return Front == Tail;
}
template<class T>
bool Queue<T>::Full()const
{
return int(Tail - Front) == max;
}
int main()
{
Queue<int>Queue1(10); Queue<double>Queue2(10);
for (int i = 2; i < 5; i++)
Queue1.In(i);
for (double i = 0; i < 8; i++)
Queue2.In(i);
cout << Queue1.Out(); //这里出现问题
}
在执行Out操作的时候,release能编译通过,但是debug就是显示
如果完美解决的话可以微信支付10y