所以我使用" 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是我项目的命名空间。
答案 0 :(得分:1)
将原型析构函数从Auto_Rent_Exception添加到派生类中。
virtual ~Auto_Rent_Exception() throw();
在旁注中,您应该注意在异常类中使用std::string
(或动态分配内存的任何内容)。如果某些API函数失败(例如因为剩余的内存太少),则std::string
构造函数可能会抛出std::bad_alloc
,隐藏初始异常。或者,如果您实现自己的内存分配器,您可能会创建无限循环的异常。捕获和忽略来自std::string
的异常会更好,以便传播原始异常(没有描述,但仍然比没有/&#34;错误&#34;异常更好)。