c++ exception application

class QueueException : public exception
{
public:
 QueueException(const char* strMsg){m_strMsg = strMsg;};
 virtual const char* what() const{return m_strMsg;};
private:
 const char* m_strMsg;
};

template<class T>
class Queue
{
public:
 Queue(int nMaxSize){
  m_nMaxSize = nMaxSize+1;
  m_data = new T[nMaxSize+1];
  m_nHead = 0;
  m_nTail = 0;
 };
 T Pop() throw(QueueException){
  if(m_nHead == m_nTail)//empty
   throw QueueException("Queue is empty when popping");
  return m_data[m_nHead++];
 };
 void Push(const T& t) throw(QueueException){
  if((m_nTail+1)%m_nMaxSize == m_nHead)//full
   throw QueueException("Queue is full when pushing");
  m_data[m_nTail++] = t;
 }
 size_t Capacity(){
  return (m_nTail+m_nMaxSize-m_nHead)%m_nMaxSize;
 }
private:
 int m_nHead;
 int m_nTail;
 int m_nMaxSize;
 T* m_data;
};

int main()
{
 Queue<int> q(5);
 try{
  q.Push(23);
  q.Push(34);
  cout<<q.Pop()<<endl;
  cout<<q.Pop()<<endl;
  q.Pop();
 }
 catch (QueueException e) {
  cout<<e.what();
 }
 return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值