是否可以在c ++中的异常类中包含多个元素,我可以将其与异常相关联,这样当我抛出异常时,用户可以收集有关异常的更多信息而不仅仅是错误消息?我有以下课程
#include <list>
using namespace std;
class myex : public out_of_range {
private:
list<int> *li;
const char* str = "";
public:
//myex(const char* err): out_of_range(err) {}
myex(li<int> *l,const char* s) : li(l),str(s) {}
const char* what(){
return str;
}
};
当我使用
抛出myex时throw myexception<int>(0,cont,"Invalid dereferencing: The iterator index is out of range.");,
我收到错误
error: no matching function for call to ‘std::out_of_range::out_of_range()’.
Any help is appreciated.`.
当我取消注释注释行并删除其他构造函数时,它可以正常工作。
答案 0 :(得分:2)
用户定义异常的构造函数尝试调用类out_of_range的默认构造函数... Except it doesn't exist!
关于评论的构造函数:
myex(const char* err): out_of_range(err) {}
//^^^^^^^^^^^^^^^^^ this calls the constructor of
// out_of_range with the parameter err.
为了修复你当前的构造函数,你应该添加一个对out_of_range的构造函数的显式调用(它带有一个const字符串&amp;):
myex(li<int> *l,const char* s) : out_of_range(s), li(l),str(s) {}