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

c++ objected oriented programming exception failure

所以我正在使用 "exception" 库的继承创建一个异常,但我收到一个错误,指出 'virtual'.

的抛出松散
#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;
};

它说:错误:'virtual Vehicle_Renting::Auto_Rent_Exception::~Auto_Rent_Exception()' 的抛出说明符更宽松 Vehicle_Renting 是我项目的命名空间。

将原型析构函数添加到从 Auto_Rent_Exception 派生的 class。

virtual ~Auto_Rent_Exception() throw();

附带说明一下,您应该小心在异常 class 中使用 std::string(或任何动态分配内存的东西)。如果某些 API 函数失败(例如,因为剩余内存太少),您的 std::string 构造函数可能会抛出 std::bad_alloc,隐藏初始异常。或者,如果您实现自己的内存分配器,您可能会创建无限循环的异常。最好捕获并忽略来自 std::string 的异常,以便传播原始异常(没有描述,但仍然优于 nothing/a "wrong" 异常)。