c ++面向对象编程异常失败

时间:2015-01-25 10:21:39

标签: c++ oop exception inheritance virtual

所以我使用" exception"的继承来创建一个例外。图书馆,但我收到一个错误,说“虚拟”#。

#include <string>
#include <exception>
#include <sstream>

namespace Vehicle_Renting{

using namespace std;

class Auto_Rent_Exception : public std::exception{


protected:
      string error;

   public:
      Auto_Rent_Exception(){
      }
  virtual const string what() = 0;

  virtual Auto_Rent_Exception* clone() = 0;
};

它说:错误:对于虚拟Vehicle_Renting :: Auto_Rent_Exception :: ~Auto_Rent_Exception()&#39;的错误抛出说明符  Vehicle_Renting是我项目的命名空间。

1 个答案:

答案 0 :(得分:1)

将原型析构函数从Auto_Rent_Exception添加到派生类中。

virtual ~Auto_Rent_Exception() throw();

在旁注中,您应该注意在异常类中使用std::string(或动态分配内存的任何内容)。如果某些API函数失败(例如因为剩余的内存太少),则std::string构造函数可能会抛出std::bad_alloc,隐藏初始异常。或者,如果您实现自己的内存分配器,您可能会创建无限循环的异常。捕获和忽略来自std::string的异常会更好,以便传播原始异常(没有描述,但仍然比没有/&#34;错误&#34;异常更好)。