C++中自定义异常类

头文件Stack.h

#ifndef STACK_H
#define STACK_H
#include <exception>
#include <deque>
using namespace std;
class ReadEmptyStackError : public exception
{
public:
virtual const char * what() const throw()
{
return "error: stack is empty!!";
}
private:


};
template<class T>
class Stack
{
public:

void push(const T& elem)
{
c.push_back(elem);
}
bool empty() const
{
return c.empty();
}
T pop()
{
if (empty())
{
throw ReadEmptyStackError();
}
T elem(c.back());
c.pop_back();
return elem;
}
T& top()
{
if (empty())
{
throw ReadEmptyStackError();
}
return c.back();
}
private:
std::deque<T> c;
};
#endif



源文件main.cpp:

#include <iostream>

#include "Stack.h"
using namespace std;


void main(){
try
{
Stack<int> s;
s.push(3);
s.push(4);
cout<<s.pop()<<endl;
cout<<s.pop()<<endl;
cout<<s.pop()<<endl;
}
catch(ReadEmptyStackError e)
{
cout<<e.what()<<endl;
}
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。