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" 异常)。
所以我正在使用 "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" 异常)。